标签: 值得二刷

48 篇文章

剑指offer67题-No50.数组中重复的数字
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 法1:哈希表,时间复杂度On,空间复杂度On bool duplicate(int numbers[], int length, int* duplication…
剑指offer67题-No48.求两个数相加
一般都是位运算,记住怎么用位运算求+吧。 可以参考:【每日算法Day 66】经典面试题:不用四则运算如何做加法? - 知乎 1)两个数做^运算,得到各位相加不进位的计算结果 2)两个数做&运算,得到进位。因为进位是要加到左一位的,所以需要左移1 3)循环操作,直到进位为0 int Add(int num1, int num2) { // 最…
剑指offer67题-No41-42.和为S的连续正数序列、和为S的两个数字
双指针算法。 法1:直接枚举,从头到尾枚举区间,记录出某段区间的值,如果值==sum,把这段区间的值加入res中。时间复杂度为On√n(n根号n)。因为内层判断不会超过√n次(1+2+3+...+√n > n)。因此空间复杂度为O√n。 vector<vector<int> > FindContinuousSequence(int…