剑指offer---数组篇
认真搬砖,专心搞钱
全栈方向,前后端、数据库都有接触,希望能将自己用到的技术做成一个个专栏
展开
-
剑指offer[c++] 连续子数组的最大和
剑指offer[c++] 连续子数组的最大和题目:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个...原创 2018-06-20 22:28:25 · 186 阅读 · 0 评论 -
剑指offer【c++】把数组排成最小的数
剑指offer【c++】把数组排成最小的数题目: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路: 类似于冒泡排序,比较string (a+b) 和 string(b+a)谁比较小,比较大的排到后面class Solution {public: stat...原创 2018-06-21 10:12:40 · 438 阅读 · 0 评论 -
剑指offer[c++] 构建乘积数组
剑指offer[c++] 构建乘积数组题目:给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。思路: 因为不能用除法,所以考虑将B分为B1和B2两部分,分别代表A[i]的前半部分和A[i]后半部分class Solution {public: ...原创 2018-06-21 10:46:04 · 458 阅读 · 0 评论 -
剑指offer【c++】数组中重复的数字
剑指offer【c++】数组中重复的数字题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。思路:因为在一个长度为n的数组里的所有数字都在0到n-1的范围内,所以可以考虑生成vec...原创 2018-06-21 11:18:12 · 569 阅读 · 0 评论 -
剑指offer[c++] 数组中只出现一次的数字
剑指offer[c++] 数组中只出现一次的数字题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路:借鉴了https://blog.csdn.net/zh_ang_lei/article/details/50908074这里说的很好,我把文字部分复制过来首先交待一下异或的基本性质:2个相同的数异或等于0,且异或操作(^)满足结合律和交换律。再来考...原创 2018-06-21 15:47:03 · 789 阅读 · 0 评论 -
剑指offer【c++】数组中出现次数超过一半的数字
剑指offer【c++】数组中出现次数超过一半的数字题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。方法一:暴力排序后,判断中间的值出现的次数是否大于长度的一半class Solution {public: int Mor...原创 2018-06-20 15:54:53 · 538 阅读 · 0 评论