7-1 数组元素循环右移问题 (20 分)

7-1 数组元素循环右移问题 (20 分)一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A​1⋯A​N−1​​ )变换为(A​N−M​​ ⋯A​N−1​​ A0​​ A​1​​ ⋯A​N−M−1​​)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分
分类: 其他 发布时间: 03-09 10:16 阅读次数: 0

小L的作文

小 L 刚考完期末,他写了一篇很烂的作文,烂到老师都不愿意给它扣分,只能给他加分,已知老师比较牛,所以他发现一个字符 x 就会加一分。问你小L 最后可以得到多少分。输入描述:第一行,给你一个字符 x,表示可以加分的字符。第二行,给你一个字符串 s,表示文章。输出描述:一个整数,表示小 L 得了多少分。示例1输入aababbbcarsa输出4说明字符 a 在文章中一共出现 4 次。 对于 30%30% 的数据,满足 |S| \leq 50∣S∣≤50 保证只会.
分类: 其他 发布时间: 03-09 10:16 阅读次数: 0

A - 整除的尾数

A - 整除的尾数一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢?Input输入数据有若干组,每组数据包含二个整数a,b(0<a<10000, 10<b<100),若遇到0 0则处理结束。Output对应每组数据,将满足条件的所有尾数在一行内输出,格式见样本输出。同组数据的输出,其每个尾数之间空一格,行末没有空格。Sample Input200 401992 950 0Sample Output00 40 801
分类: 其他 发布时间: 03-09 10:16 阅读次数: 0

B - Fibonacci Again

B - Fibonacci AgainThere are another kind of Fibonacci numbers: F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2).InputInput consists of a sequence of lines, each containing an integer n. (n < 1,000,000).OutputPrint the word “yes” if 3 div
分类: 其他 发布时间: 03-09 10:16 阅读次数: 0

C - 3 求正弦值

C - 3输入一组勾股数 a,b,c(a≠bc),用分数格式输出其最小锐角的正弦值。(要求是最简分数)输入格式一行,包含三个数,即勾股数 a,b,c(任意顺序)。输出格式一行,包含一个数,即最小锐角的正弦值。Sample Input3 5 4Sample Output3/5在这里插入代码片#include<stdio.h>int main(){ int a,b,c; int max,min; int r; scanf("%d%d%d",&amp
分类: 其他 发布时间: 03-09 10:15 阅读次数: 0

关于VS2019缩进问题及Format On Save工具

  VS2019自带了缩进系统,但是默认配置不是很好用,下面的调参会让人更舒适。修改工具->选项->文本编辑器中对应语言的Tabs选项,关闭Tabs,一致改为空格,空格数量可选4或者2,看项目组的规范统一关闭工具->选项->文本编辑器中对应语言中粘贴后自动更新格式的选项下载Format On Save插件,并记得将EnableFormatDocument设置为false....
分类: 其他 发布时间: 03-09 10:15 阅读次数: 0

关于指导新人的感想

一. 前言  最近指导的新人遇上了一次较大的失误,本文从指导者和新手程序员两个角度来总结我的个人体会感想。二. 作为导师  作为导师,是需要负担起指导新人的责任的,关于这一点自我感觉做的不够到位,因为在给予新人足够自由的成长空间和手把手指导之间的度其实是挺难把握的,于此大致有如下体会。先把新人当成傻子,基础问题需要事无巨细的说明。如:公司制度、代码规范、版本控制工具使用原则和流程、开发环境的搭建、自测流程和众多注意事项等。也许你认为很多很简单、是常识,但是对于新人来说也许真的就不知道,正如一句名言
分类: 其他 发布时间: 03-09 10:15 阅读次数: 0

leetcode解题思路分析(四十六)395 - 401 题

至少有K个重复字符的最长子串找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不少于 k 。输出 T 的长度。首先用哈希表算出每个字符出现个数,出现个数少于K的则作为分治的分割点,然后分割后长度小于当前最大子串长的则不需要计算了,直接剔除class Solution {public: int longestSubstring(string s, int k) { unordered_map<char, int> u.
分类: 其他 发布时间: 03-09 10:15 阅读次数: 0

杂谈之code review

一. 前言  本文有感于大佬不厌其烦多次的code review,确实让人受益良多,颇多感激难以言语表达,只能默默记在心里。本文将从写代码和帮别人过代码两个角度来记录感悟,希望对大家都能有所帮助。二. Show leader the code  对程序员来说,代码就是自己的名片,也是自己的最好证明,所以一定要对代码有所追求。套用某部YY小说里的一句台词:“世界上没有纯净的铁,只有发现不了杂质的人”,追求代码的完美是毕生的事。关于代码规范,该部分属于程序员基本素养,但是绝大多数人做的都不算好。细谈
分类: 其他 发布时间: 03-09 10:14 阅读次数: 0

Linux操作系统学习笔记(二十一)网络通信之三次握手

一. 前言  三次握手的基本知识在前文中已说明,本文从源码入手来详细分析其实现原理。二. 基本过程和API  一个简单的TCP客户端/服务端模型如下所示,其中Socket()会创建套接字并返回描述符,在前文已经详细分析过。之后bind()会绑定本地的IP/Port二元组用以定位,而connect(), listen(), accept()则是本篇的重点所在,即通过三次握手完成连接的建立。三. 源码分析3.1 bind  首先来看看bind()函数。其API如下所示int bind(int
分类: 其他 发布时间: 03-09 10:14 阅读次数: 0

面试官角度看校招面试之吐槽

一. 前言  受老大赏识,最近有幸参与了校招面试,经过多场面试后感慨颇深,分享于此。说起来也挺有趣的,最近和一个朋友抱怨最近面试太多了,天天说的口干舌燥的还没有啥收成,朋友问我年终奖都不要了吗,我说我是面试官不是面其他公司,然后就没有然后了。二. 注意事项切记不要耍小聪明  有些人想着远程看不见,就打开电脑、Ipad、笔记本等,抱着“开卷有益”的想法试着撞一撞运气。但是显然面试官也没有那么蠢,敲击键盘的声音听得可清晰了呢,哪怕没有声音,回答问题和背书一样而且禁不住深究明显也是很容易露馅的。尤其是
分类: 其他 发布时间: 03-09 10:14 阅读次数: 0

leetcode解题思路分析(四十七)402 - 408 题

class Solution {public: string removeKdigits(string num, int k) { string res; int n = num.size(), m = n - k; for (char c : num) { while (k && res.size() && res.back() > c) { ...
分类: 其他 发布时间: 03-09 10:14 阅读次数: 0

leetcode解题思路分析(四十八)410 - 419 题

分割数组的最大值给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。先思考最简单的情况,如果分成两个子数组,那肯定是让二者值接近为佳。如果分成m个,那肯定是让m个值接近为佳。所以可以采取类似二分的思想,先去一个近似值,然后检查是否满足要求,不满足则再减少,满足则再增加,直至找到最合适的值class Solution {public: bool check(vector<int>& num.
分类: 其他 发布时间: 03-09 10:13 阅读次数: 0

leetcode解题思路分析(四十九)420 - 426 题

强密码校验器一个强密码应满足以下所有条件:由至少6个,至多20个字符组成。至少包含一个小写字母,一个大写字母,和一个数字。同一字符不能连续出现三次 (比如 “…aaa…” 是不允许的, 但是 “…aa…a…” 是可以的)。编写函数 strongPasswordChecker(s),s 代表输入字符串,如果 s 已经符合强密码条件,则返回0;否则返回要将 s 修改为满足强密码条件的字符串所需要进行修改的最小步数。插入、删除、替换任一字符都算作一次修改。本题难点在于分阶段讨论,其中连续的字符可以通过插入.
分类: 其他 发布时间: 03-09 10:13 阅读次数: 0

Linux操作系统学习笔记(二十二)网络通信之发包

一. 简介  本文将分析网络协议栈发包的整个流程,根据顺序我们将依次介绍套接字文件系统、传输层、网络层、数据链路层、硬件设备层的相关发包处理流程,内容较多较复杂,主要掌握整个流程即可。二. 套接字文件系统  在前文中已经介绍了套接字socket和文件描述符fd以及对应的文件file的关系。在用户态使用网络编程的时候,我们可以采用write()和read()的方式通过文件描述符写入。套接字文件系统的操作定义如下,读对应的是sock_read_iter(),写对应的是sock_read_iter()s
分类: 其他 发布时间: 03-09 10:13 阅读次数: 0

volatile硬核剖析

一. 前言  volatile在JAVA和C/C++中均有使用,而含义不同。不论是前者还是后者,在网上都流传着诸多误解,为此我们抛开一切中文资料,从JAVA、C/C++的文档手册、开发者的博客、stack overflow的高赞问题回复等源头去着手了解,并结合实际代码测试来验证其说法的可靠性。二. JAVA的volatile  首先来看一个来自于DZone社区的例子public class VolatileTest { private static final Logger LOGGER =
分类: 其他 发布时间: 03-09 10:13 阅读次数: 0

leetcode解题思路分析(五十)432 - 438 题

全O(1)的数据结构哈希表+链表即可class AllOne {public: /** Initialize your data structure here. */ struct Node{ unordered_set<string> container; int val = 0; Node(int v):val(v){} }; unordered_map<string, list<Node&.
分类: 其他 发布时间: 03-09 10:12 阅读次数: 0

Linux操作系统学习笔记(二十三)网络通信之收包

一. 简介  本文将分析网络协议栈收包的整个流程,收包和发包是刚好相反的过程。根据顺序我们将依次介绍硬件设备驱动层、数据链路层、网络层、传输层、套接字文件系统的相关发包处理流程,内容较多较复杂,主要掌握整个流程即可。二. 网卡驱动层  网卡作为一个硬件,接收到网络包后靠中断来通知操作系统。但是这里有个问题:网络包的到来往往是很难预期的。网络吞吐量比较大的时候,网络包的到达会十分频繁。这个时候,如果非常频繁地去触发中断,会造成频繁的上下文切换,带来极大的开销。因此硬件处理厂商设计了一种机制,就是当一些
分类: 其他 发布时间: 03-09 10:12 阅读次数: 0

Linux操作系统学习笔记(二十四)网络通信之性能优化

一. 前言  在前面的几篇文章中,我们大致介绍了Linux网络协议栈的基本结构体、收发流程、TCP协议设计原理等,整个网络通信其实是一个很复杂的过程。本文介绍性能测试、性能评估、性能优化等方方面面的基本内容和大致优化思路。二. 总体性能参数和工具  对于服务器来说,首先需要一个大致的轮廓来描述其性能,这些性能参数将整个应用视为黑盒,测试其从外部看上去的性能表现,属于第一步需要掌握的数据。只有先掌握了这些数据后,后续的分析才有意义。带宽:表示链路的最大传输速率,单位通常为 b/s (比特 / 秒)
分类: 其他 发布时间: 03-09 10:12 阅读次数: 0

Linux操作系统学习笔记(二十五)CPU性能优化

一. 前言  本文介绍Linux服务器CPU性能评估和优化的基本方法。二. CPU性能查询工具详解2.1 平均负载  平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系。所谓可运行状态的进程,是指正在使用 CPU 或者正在等待 CPU 的进程,也就是我们常用 ps 命令看到的,处于 R 状态(Running 或 Runnable)的进程。不可中断状态的进程则是正处于内核态关键流程中的进程,并且这些流程是不可打断的,比如最常
分类: 其他 发布时间: 03-09 10:12 阅读次数: 0