![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
LjMengm
对的事,天天做。
展开
-
LeetCode 38. 报数
解题思路 所谓报数,就是根据s1,报出一个s2. 首先我手上拿着s1的第1个数字number,并且配套的count = 1. 然后我看s1的第2个数字,哦,和我手上拿着的number相同,那我就让count++ 然后我看s1的第3个数字,哦,和我手上拿着的number还相同,那我就还让count++ 然后我看s1的第4个数字,哦,和我手上拿着的不同,那我做两件事: 1. “打印”我手上的num...原创 2019-12-06 16:11:07 · 103 阅读 · 0 评论 -
LeetCode 35 搜索插入位置-------- 用人话注释经典二分法
解题思路 二分法就是不断缩小可能区间,也就是排除法,把不可能的排除,留下可能的。当可能的区间被排除到长度为1的时候,就可以单独讨论了。 比如说本题最后为什么返回left?为什么不是left-1?为什么不是left+1?说实话最开始我是结合具体例子一个一个讨论的,最后发现不管nums[left]和target什么关系,都是应该返回left。于是得到了比较简洁的代码。 代码 class Soluti...原创 2019-12-06 10:46:23 · 133 阅读 · 0 评论 -
LeetCode 34 在排序数组中查找元素的第一个和最后一个位置
代码比较长,是因为想法比较简单。 解题思路 三步走: 用二分法找到target 用二分法找到左边界 用二分法找到右边界 第1步使用了while形式的二分法,后两步使用了递归形式的二分法。 (有收获的话求个赞…) 代码 class Solution { public: vector<int> searchRange(vector<int>& nums, ...原创 2019-12-06 10:03:03 · 71 阅读 · 0 评论 -
LeetCode 31 下一个排列
首先要在草稿纸上搞清楚什么是字典序的下一个排列,自己能够手写下一个排列。然后就不难想出我的这种思路了。当我也是经历了各种思维误区后才AC的。 解题思路 从后往前扫,如果右边的数比左边的大,那么就可以通过交换这两个数来使得整个排列更大。也就是说找到一个更大的数放到前面。但是这里要注意这个更大的数也不能最大,要是比前一个大的最小的数。现在直接看代码可能会清晰点。 代码 class Solution ...原创 2019-12-06 08:29:10 · 92 阅读 · 0 评论 -
LeetCode 29 两数相除
越界问题只要对除数是1和-1单独讨论就完事了啊 关于如何提高效率快速逼近结果 举个例子:11 除以 3 。 首先11比3大,结果至少是1, 然后我让3翻倍,就是6,发现11比3翻倍后还要大,那么结果就至少是2了,那我让这个6再翻倍,得12,11不比12大,吓死我了,差点让就让刚才的最小解2也翻倍得到4了。但是我知道最终结果肯定在2和4之间。也就是说2再加上某个数,这个数是多少呢?我让11减去刚才...原创 2019-12-05 20:21:09 · 76 阅读 · 0 评论 -
LeetCode 28. 实现 strStr()
用人话描述题目 给你两个字符串,问你: 第二个字符串在第一个字符串中出现的位置是多少?你可能会问,如果第一个字符串中压根不包含第一个字符串呢?那就返回-1. 简单的思想是,从头到尾扫描,不放过每一个匹配成功的机会。 class Solution { public: int strStr(string haystack, string needle) { if(haysta...原创 2019-12-05 18:07:06 · 87 阅读 · 0 评论 -
LeetCode 101.对称二叉树
对称二叉树的定义: 1.空树是对称二叉树 2.对于非空树:左子树与右子树对称的二叉树为对称二叉树。 两颗树对称的定义是什么? 1.对于空树,只与空树是对称的 2.对于非空树L,他与另一颗非空树R对称,当且仅当L的左子树与R的右子树对称 && L的右子树与R的左子树对称 显然这个定义是递归的,所以根据定义可以直接写出递归代码,可以稍微合并一些判断条件使得看起来更简洁。 class S...原创 2019-11-27 16:17:51 · 84 阅读 · 0 评论