刷题过程呢,针对每道题目,我打算记录下自己的思路和解答过程。再根据提交答案的比对,拆解参考答案或者其它优质答案来进行自我的优化,最终给出一个最推荐的解答。...题目 中文题目 第 1 题 两数之和: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。...) 链接:https://leetcode-cn.com/problems/two-sum 英文题目 Question 1 Two Sum: Given an array of integers, return...1.调换下两个数的位置 这算挺神奇一发现,刚我们在 for 循环中,针对得到的第 i 项 item,检测差值是否在 nums[i+1:] 中,也就是在该项后面寻找差值。...结论 第一题,难度在 LeetCode 中是简单程度,但这么琢磨下来,学到的点也不少:算法的设计,数据结构的选择等。
也就是在我们能拿到结果 7 0 8 后,也要把它转化为这么一个 ListNode 才可以。...同样的代码在不同分区提交,数据差异还是有的:执行时间估计和服务器所在地有关吧,目前我在香港,用英文版的执行时反倒更快些;但这个击败用户比例,心痛,看来还要继续优化啊。...优化 结合着推荐答案与评论区,尝试了下在刚刚的思路上优化,我刚代码中两个 while 循环遍历输入的两个链表,最后又一个 for 循环来来生成结果链表,而这三个循环过程实际上可以做到逐位对应,也就是遍历过程可以放到一起...思路展示 图片、答案思路来源: https://leetcode-cn.com/problems/add-two-numbers/solution/liang-shu-xiang-jia-by-leetcode...结论 第二题,难度在 LeetCode 中是中等难度,确实一上来这个定义的 ListNode 给了一个下马威,只能尝试着先琢磨明白这个类、搞明白如何返回相应的格式结果,之后便可以回归到我们可以正常设计的算法上来了
上leetcode项目,不定期更新。...题目摘自leetcode: Leetcode 001. Two Sum Leetcode 015. 3Sum Leetcode 018. 4Sum Leetcode 001....Two Sum 头号种子啊,刷leetcode第一题就是它,带我入门带我飞。说说当初的思路吧,好幼稚。 顺序遍历所有pair对,把符合的target的sum挑出来。...: 为何for循环遍历过的元素,在找TWO SUM的解时,不在考虑了?...第一个问题,可以想象,假设遍历过的k元素,是在遍历i元素时(i > k),TWO SUM的一个解,由于代码查找的结构,一定在遍历k时,找到了TWO SUM中的某个i元素,而不会等到遍历i元素才找到k元素
0099/0001.Two-Sum/[2] 代码仓库:https://github.com/ShixiangWang/LeetCode[3] 问题 给定一个整数数组 nums 和一个整数目标值 target...你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。...题解 顺序扫描数组,对每一个元素,在 map 中找能组合给定值的另一半数字,如果找到了,直接返回 2 个数字的下标即可。.../LeetCode/leetcode/0001-two-sum/main.go" [0 1] [1 2] R 依据题解和Go的实现思路,不难写出R的对应程序。.../leetcode-cn.com/problems/two-sum: https://leetcode-cn.com/problems/two-sum [2] https://books.halfrost.com
/ 英文链接 https://leetcode.com/problems/3sum-closest/description/ 题目详述 给定一个包括 n 个整数的数组 nums 和 一个目标值 target...题目详解 思路 先sort一下array,为啥要sort呢,因为要用到two pointers 来遍历找两数之和,只有在从小到大排序之后的结果上,才能根据情况移动left 和right。...首先是如果数组只有3个数字,那么直接返回这三个数字之和;(最少三个数) 当确定好了第一个数字后,就在剩下的array里找两数之和,在加上第一个数字,用这个tempSum减去target 来得到tempCha...利用two pointers 特性, 如果tempSum 比target 小的话,说明我们需要更大的sum,所以要让left++以便得到更大的sum。...pointers 特性, 如果tempSum 比target 小的话,说明我们需要更大的sum,所以要让left++以便得到更大的sum。
gtest-all.cc 再生成.a静态库文件: ar -rv libgtest.a gtest.o 生成的libgtest.a以及该目录include下的头文件都是我们后面测试需要的,其他文件在测试项目中暂时用不上...目录下新建src目录和include目录,分别用于存放头文件和.c文件 我在include下放了两个头文件common.h 和leetcode_functions.h 内容分别如下: common.h...编译 g++ -o 001_two_sum.o -c ./leetcode/src/001_Two_Sum.c -I ....[ RUN ] two_sum_test.twoSum001 numsSize=4 [ OK ] two_sum_test.twoSum001 (0 ms) [---------...可以看到,共有一个用例,通过了一个用例 项目代码可以在github下载,下载地址:https://github.com/yanbinghu/LeetCodeWithC.git, 节点: f727e04969ffad51a7dba4cd1227772413cbe7f1
昨天的题解 题目 每天一道leetcode15-三数之和 分类:数组 中文链接: https://leetcode-cn.com/problems/3sum/submissions/ 英文链接 https...://leetcode.com/problems/3sum/submissions/ 题目详述 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a +...首先是如果数组只有3个数字,那么直接返回这三个数字之和;(最少三个数) 当确定好了第一个数字后,就在剩下的array里找两数之和,在加上第一个数字,得到tempSum,比较这个tempSum是不是等于0...sum,所以要让left++以便得到更大的sum。...比0 小的话,说明我们需要更大的sum,所以要让left++以便得到更大的sum。
LeetCode Two Sum 题目:two sum Given an array of integers, return indices of the two numbers such that...,如果这个字符串较长,就会造成越界错误 所以我们首先需要得到最短字符串和它自身的长度,来确定外循环次数,内循环去循环遍历每个字符串。...有了这个结构,就能知道我们需要得到结点的值才能进行比较。 又由于题目要求我们使用其中的一个结点将两个链表拼接起来,换句话说,就是将一个链表合并到另一个链表上,所以并不能创建一个新链表去进行操作。...然后笔者在纸上,分别列举了当n=1,2,3,4…时的结果数,发现了一个规律,每一次的结果等于上一次+上上次的结果的和,类似与斐波那契数列。...上述环境在ubuntu16.04 lts和python3.5中测试成功 上述文字皆为个人看法,如有错误或建议请及时联系我
【狗头】 使用3 Sum 言归正传,回到算法本身,在3 Sum问题当中,我们通过two pointers算法,维护了一个区间,使得这个区间头尾元素的和等于一个特定值。...所以我们利用3 Sum也一样,我们只需要枚举第一个元素,然后在剩下的数组当中,套用3 Sum寻找可能的组合即可。 解法也很简单,我们只需要把之前3 Sum的代码抄过来,然后增加一个调用函数即可。...一个想法是我们能不能跳过3 Sum直接用2 Sum?其实可以的,因为我们在3 Sum当中只枚举了第一个数,然后通过two pointers寻找剩下的两个数的组合。...因为我们无法同时缩放两个区间,看起来是两个two pointers套用,但实际上还是只是用到了一个two pointers算法而已。...正是在反复的思考当中,我们的算法思维才能养成,解题能力才能提升。 当然,另一个原因是不掰扯出一些道理来,这么大段我就白写了【狗头】。
同时,在该目录下创建以下三个目录 ├── gmock //存放gtest框架内容 ├── leetcode //存放项目源代码 ├── testcase //存放测试用例代码 └── Makefile...另外,我们还需要一个main函数文件。...目录下新建src目录和include目录,分别用于存放头文件和.c文件 我在include下放了两个头文件common.h 和leetcode_functions.h 内容分别如下: common.h...编译 g++ -o 001_two_sum.o -c ./leetcode/src/001_Two_Sum.c -I ....[ RUN ] two_sum_test.twoSum001 numsSize=4 [ OK ] two_sum_test.twoSum001 (0 ms) [---------
fork下Github上leetcode项目,不定期更新。...当前任务end态,停止计时,此时更新计数值,且让系统返回被切换后的前一个状态。...在第一题做法的基础上,遍历k到nums.length,求出最大,时间复杂度为O(n2)O(n^2),TLE了,此题技巧性比较强,先用二分搜索解,把问题转换成求符合条件的subArray。...利用滑动窗口可以优化,在窗口增大的过程中,维护一个左侧小于0的subArray,这样得到的sum一定是当前下标下,所有窗口长度的最大sum,代码如下: public double findMaxAverage...only two sentences that have prefix “i “.
两种思路 第一种:先遍历一遍数组,使用target减去数组中每一个元素得到一个差,然后再去遍历数组,看看数组中是否存在一个和这个差一样的数。如果存在,那么则代表查找成功。否则查找失败。...leetcode官方的代码,第二个Tom edition 运行结果: 第二种方法就是比较高级的,这是我通过leetcode官网学习到的,所以分享出来大家一起学习一下。.../problems/two-sum/solutions/434597/liang-shu-zhi-he-by-leetcode-solution/ 来源:力扣(LeetCode) 著作权归作者所有。...还有一个java版本,感觉java版本的更容易理解一些,但是也不容易想出来。.../problems/two-sum/solutions/434597/liang-shu-zhi-he-by-leetcode-solution/ 来源:力扣(LeetCode) 著作权归作者所有。
算法细节系列(2):231.Power of Two && Three 前言 在刷leetCode时,遇到了一系列关于power of Number的问题,刚开始不以为然,以为用简单的递归就能求解,可直到看到...它的思维深度和广度着实不是我等小菜能够比拟的,但我还是在其基础上强行解释了一些算法的核心思想。...我们换个维度考虑问题,所给的数都是十进制的数,而算法2.是把十进制的数映射到了二进制上,因为我们求的是power of Two,那么我们就必须映射到二进制上去嘛?..._{i=0}^{len(s)-1}s[i]*3^i 得到: 1 -> 000_001 3 -> 000_010 9 -> 000_100 27 -> 001_000 我一直在思考这种解法是如何被发现的...即公式: ∑i=0len(s)−1s[i]∗3i \sum_{i=0}^{len(s)-1}s[i]*3^i ---- 个人觉得上述,关于该算法的解释有点牵强,但有一点是我从归纳和总结中学到的,
昨天的题解 题目 每天一道leetcode18- 四数之和 分类:双指针 中文链接: https://leetcode-cn.com/problems/4sum/description/ 英文链接...https://leetcode.com/problems/4sum/description/ 题目详述 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素...pointers 来遍历找两数之和,只有在从小到大排序之后的结果上,才能根据情况移动left 和right。...与target不相等 利用two pointers 特性, 如果tempSum 比target 小的话,说明我们需要更大的sum,所以要让left++以便得到更大的sum。...与target不相等 利用two pointers 特性, 如果tempSum 比target小的话,说明我们需要更大的sum,所以要让left++以便得到更大的sum。
fork下Github上leetcode项目,不定期更新。...这道题说难还真有点难度,说简单也还挺简单的,只要有一个点get到了,通过归简技术就能解决了,也让我认识到归简的强大。...n中,当前now的最小值,{}表示集中,当然这是我自己的表达方式 deadline[n] 表示在集合n中,当前第n门课的最小值 所以根据当前n-1门课的信息,可以得到: a. now{n-1} 一个核心思想,如何根据n-1得到第n个数的所有组合。 看图: ? 上图说的当n = 5,k = 4时,根据n = 4得到的组合数。...接着在sum中记录所有的公式即可。
LeetCode收录了许多互联网公司的算法题目,被称为刷题神器,我虽然早有耳闻,不过却一直没有上面玩过。 ...的题目非常简单,实际上LeetCode基本上涉及到了所有常规的算法类型。...下面是我刷 LeetCode 的一些收获,希望能够引诱大家有空时刷刷题目。...Sudoku Solver 数独是一个经典的回溯问题,配合 HashTable 的话,运行时间将大幅减少。 Tree:树在计算机学科的应用十分广泛,常用的有二叉搜索树,红黑书,B+树等。...Path Sum II 是一个不错的开胃菜。
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !...今天和大家聊的问题叫做 只出现一次的数字 III,我们先来看题面: https://leetcode-cn.com/problems/single-number-iii/ Given an integer...Find the two elements that appear only once. You can return the answer in any order....给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。 进阶:你的算法应该具有线性时间复杂度。...} int firstOne = sum & (-sum); // 得到最低位的1,sum & (-sum)这是一个常见的技巧 for(int i =
今天分享leetcode第4篇文章,也是leetcode第16题—3Sum Closest,地址是:https://leetcode.com/problems/3sum-closest/ 【英文题目】...【思路】 这道题和3Sum以及Two Sum II类似,比较直观的有一种解法:暴力破解,得到所有的三数之和,返回距离target最近的值,时间复杂度O(n^3) 那么时间复杂度能降低吗?...是否可以参考Two Sum II呢? 当然可以。...a+b+c 靠近 target,也就是b+c 靠近 target-a,(数组有序的情况下)我们可以使用Two Sum II的方法(两个指针“多退少补”)只用O(n)的时间便得到最靠近 target-a的...++编译器必须是在函数最后返回结果,因此需要使用break跳出while循环。
题目描述 15.三数之和 链接:https://leetcode-cn.com/problems/3sum/ 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,...18.四数之和 链接:https://leetcode-cn.com/problems/4sum/ 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素...left, right = j + 1, length - 1 while left < right: four_sum = two_sum...如果觉得自己已经理解了的话,可以去 LeetCode 上实际写下。看看自己到底有没有掌握。...LeetCode 上更多的关于双指针的题目链接: https://leetcode-cn.com/tag/two-pointers/ 如果有其他问题的话,可以在公众号底部找到我的联系方式,一起交流。
这次来写一下 LeetCode 的第 2 题,两数相加。 题目描述 题目直接从 LeetCode 上截图过来,题目如下: ?...上面的题就是 两数相加 题目的截图,同时 LeetCode 会根据选择的语言给出了一个类的定义或者函数的定义,然后在其中实现 两数相加 的解题过程。这次我使用 C 语言来进行完成。...,然后我们要做的就是让两个链表的每个节点相加,并产生新的节点构成一个新的链表,并且链表上的每个节点只能存储一位数。...问题分析 初看题目,可能觉得并不复杂,事实上也的确不是很复杂。两个链表的每个节点相加,然后所得的结果存在一个新的链表节点当中,且这个节点中只能存一位数。...链表最后的一对节点相加后也可能会产生进位,因此在循环相加后,需要判断是否产生了进位,如果有进位需要为这个进位一个单独的节点链到链表的结尾处。
领取专属 10元无门槛券
手把手带您无忧上云