04 2019 档案
摘要:108. Convert Sorted Array to Binary Search Tree 这个题使用二分查找,主要要注意边界条件。 如果left > right,就返回NULL。每次更新的时候是mid-1,mid+1。 自己推一下基本就可以验证了。 109. Convert Sorted Li
阅读全文
摘要:无论是1,还是2,删除链表都需要3个节点,只是现在这种最新写法只把cur作为了判断循环的依据,并且下一个节点的生成放在循环内。 206. Reverse Linked List 之前在牛客上的写法: 错误代码: 此代码会报“段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多
阅读全文
摘要:54题是把二维数组安卓螺旋的顺序进行打印,59题是把1到n平方的数字按照螺旋的顺序进行放置 54. Spiral Matrix start表示的是每次一圈的开始,每次开始其实就是从(0,0)、(1,1)这种开始的。 用endx、endy来表示每次转圈的x、y方向的终止位置,方便后面进行边界条件设置。
阅读全文
摘要:48. Rotate Image 1.这个题是顺时针旋转90度,方法是:先以右对角线为轴对称交换,然后以中间行为轴进行交换 2.逆时针旋转90度是以左对角线为轴对称交换,然后以中间行为轴进行交换 3.旋转180度,直接以最中间那个数为对称点进行交换 以对称轴做交换,第一个数组的i和第二个数组的j对应
阅读全文
摘要:203题是在链表中删除一个固定的值,83题是在链表中删除重复的数值,但要保留一个;82也是删除重复的数值,但重复的都删除,不保留。 比如[1、2、2、3],83题要求的结果是[1、2、3],82题要求的结果是[1,3]。 这种题用递归去做比较方便思考,特别是这种重复的数值。递归就是只遍历当前的节点的
阅读全文
摘要:263. Ugly Number 注意:1.小于等于0都不属于丑数 2.while循环的判断不是num >= 0, 而是能被2 、3、5整除,即能被整除才去除这些数 264. Ugly Number II 用一个数组去存第n个前面的所有整数,然后记录2 、3、5当前数的索引,每次选择最小的数。注意每
阅读全文
摘要:找最后一个word的长度。 从后往前计算,找到第一个不是空的位置,然后从这个位置再继续找第一个为空的位置
阅读全文
摘要:1.INSTALL_FAILED_NO_MATCHING_ABIS解决办法 https://www.jianshu.com/p/a781ad09b092 2.Could not find com.android.tools.build:aapt2:3.2.1-4818971. https://blo
阅读全文
摘要:这道题求有序矩阵中第K小的元素,数组如下: 二分的方法解决,时间复杂度: O(nlgX)。从左下角进行遍历 https://www.cnblogs.com/grandyang/p/5727892.html
阅读全文
摘要:这种题都要设置一个符号位的变量 224. Basic Calculator 设置数值和符号两个变量,遇到左括号将数值和符号加进栈中 227. Basic Calculator II 乘除法有优先级,这个时候需要将这些数值弹出 与上一题不同,这个题是把所有的结果存入进stack中
阅读全文
摘要:169. Majority Element 求超过数组个数一半的数 可以使用hash解决,时间复杂度为O(n),但空间复杂度也为O(n) 使用投票法,时间复杂度为O(n),空间复杂度为O(1)。 投票法就是记录出现的频次 leetcode是默认了有超过的,所以可以直接这样返回。像剑指offer上,还
阅读全文
摘要:136. Single Number 除了一个数字,其他数字都出现了两遍。 用异或解决,亦或的特点:1.相同的数结果为0,不同的数结果为1 2.与自己亦或为0,与0亦或为原来的数 137. Single Number II 除了一个数字其他数字都出现了三遍。 因为数字为int型,就有32位。统计每个
阅读全文
摘要:155. Min Stack 232. Implement Queue using Stacks 225. Implement Stack using Queues 将存储的队列之前的数值再次加入到队列的末尾 http://www.cnblogs.com/grandyang/p/4568796.ht
阅读全文
摘要:557. Reverse Words in a String III 最简单的把空白之间的词反转 151. Reverse Words in a String 151题实际上比557题要难一些。难在,字符串中的空格不再仅仅在字符之间,在字符串的开头和结尾都可能有,并且空格的个数不再仅仅是1,而是有可
阅读全文
摘要:这4个题都是针对旋转的排序数组。其中153、154是在旋转的排序数组中找最小值,33、81是在旋转的排序数组中找一个固定的值。且153和33都是没有重复数值的数组,154、81都是针对各自问题的版本1增加了有重复数值的限制条件。 153、154都需要考虑是否旋转成和原数组一样的情况,特别的,154题
阅读全文
摘要:344. Reverse String 最基础的旋转字符串 541. Reverse String II 旋转k个字符,然后间隔k个字符不旋转,再旋转k个字符。z 注意:一般最后都会剩下几个不够k个的字符,如果这些字符的前一次字符进行了旋转,就不旋转;如果前一次没有进行旋转,就需要旋转。其实就是奇数
阅读全文
摘要:162. Find Peak Element 前面递增,后面递减,一定有波峰 二分法加快搜索的速度
阅读全文
摘要:合并到一个新的数组,直接比较就好了,这个题目是将nums1、nums2合并到nums1,nums1有许多多余的空间 如果按照合并到一个新的数组从小比到大的方式进行比较,就需要每次挪动nums1的数组。 本题可以采用从大到小的比较方式,这样就不用每次挪动数组。 同时注意,m和n都是可以为0的,nums
阅读全文
摘要:74. Search a 2D Matrix 整个二维数组是有序排列的,可以把这个想象成一个有序的一维数组,然后用二分找中间值就好了。 这个时候需要将全部的长度转换为相应的坐标,/col获得x坐标,%col获得y坐标 240. Search a 2D Matrix II 与第一个题不同,行与行之间不
阅读全文
摘要:704. Binary Search 1.使用start+1 < end,这样保证最后剩两个数 2.mid = start + (end - start)/2,这样避免接近max-int导致的溢出 3.start、end直接等于mid 4.最后比较两个位置 35. Search Insert Pos
阅读全文
摘要:Paint House 自己的写法: 更优的写法: https://www.cnblogs.com/grandyang/p/5319384.html
阅读全文
摘要:55. Jump Game 第一种方法: 只要找到一个方式可以到达,那当前位置就是可以到达的,所以可以break 第二种方法: 第一种方法时间复杂度高且需要O(n)的空间复杂度。这题用贪心在O(n)的时间复杂度,O(1)的空间复杂度就可以解决。 用一个reach变量记录当前位置能达到的最远的位置索引
阅读全文
摘要:dp的做法: 错误解法一: n=1的时候,申请的vector只有2个大小,dp[2]=2就错误了 正解: dp的做法要申请空间,会有空间消耗。可以设计参数的方式来实现:
阅读全文
摘要:62. Unique Paths 63. Unique Paths II leetcode的例子中int会越界,所以需要用long 与Unique Paths I不同在于多了障碍物,障碍物的情况直接为0就好,在初始化的时候需要做这个操作,在dp的迭代过程中也要做,其他与Unique Paths I
阅读全文
摘要:131. Palindrome Partitioning 一个字符串,通过不同的切分找到所有切分后的子字符串都是回文的可能性 substr使用的是坐标值,不使用.begin()、.end()这种迭代器 使用dfs,类似于subsets的题,每次判断要不要加入这个数 start每次是起始的位置,判断当
阅读全文
摘要:127. Word Ladder 这道题使用bfs来解决,每次将满足要求的变换单词加入队列中。 wordSet用来记录当前词典中的单词,做一个单词变换生成一个新单词,都需要判断这个单词是否在词典中,不在词典中就不能加入队列。 pathCnt用来记录遍历到的某一个词使用的次数,做一个单词变换生成一个新
阅读全文
摘要:51. N-Queens 使用isValid判断当前的位置是否合法 每次遍历一行,使用queenCol记录之前行的存储位置,一方面是用于判断合法,另一方面可以根据存储结果输出最终的结果 棋盘的斜线都是45°的,所以两个位置x的差值和y的差值应该是相等的 52. N-Queens II 这个题更像是5
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/4332522.html 数字从1到n,生成所有具有k个的组合 本质上跟subsets更像,因为回溯回来只能选下一个位置的数值,可选择的数值在减少,搜索树的形状与subsets更像。 不同的是, 不是所有的节点都是可行解了,而是
阅读全文
摘要:graphdfsbfs 1.clone graph2.copy list with random pointer3.topological sorting4.permutations5.subsets6.n queens7.subsetsII 8.palindrome partitioning9.c
阅读全文
摘要:leetcode 199. Binary Tree Right Side View 这个题实际上就是把每一行最右侧的树打印出来,所以实际上还是一个层次遍历。 依旧利用之前层次遍历的代码,每次大的循环存储的是一行的节点,最后一个节点就是想要的那个节点 leetcode 116. Populating
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/4620012.html 这个题其实就是中序遍历第k个数就好了,代码最好写的就是非递归的方式,在stack里面找第k个就好了。也可以使用递归的方式: 注意:这种递归的方法在NULL时候返回-1,如果找到了数字,返回值就会以当前的
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/9914546.html 类似于二分查找的方法,用迭代的方法去做 注意:无论是进入左子树还是右子树,左右子树都变成了新的数,所以需要重新根据root->left = ....来重新生成
阅读全文
摘要:完全二叉树的定义:若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。 解题思路:将树按照层进行遍历,如果出现null后还出现非null则能证明这个不是完全二叉树 https://leetcode.com/
阅读全文
摘要:class Solution { public: bool isBalanced(TreeNode* root) { int depth = 0; return Balanced(root,depth); } bool Balanced(TreeNode* root,int& depth){ if(root == NUL...
阅读全文
摘要:104: 111: 最小的深度这个题与最大的深度这个题稍稍有点不同,因为最小深度的计算必须从叶子节点开始,没有叶子节点不能计算,所以1,2这种情况只能返回2,不能返回1。做个判断即可。
阅读全文
摘要:题目: 1.binary tree preorder traversal 2.maximum depth of binary tree 3.balanced binary tree 4.binary tree maximum path sum,这个题也可以简化,从根节点出发的最大路径和 5.lowe
阅读全文