随笔分类 - Leetcode刷题笔记
摘要:由于以后会从事嵌入式,所以这些题打算全部用C语言来完成。 第一题:从排序数组中删除重复项。 示例: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 来源:点击这里 做数组题一定优先
阅读全文
摘要:可以使用位运算来做这道题 例如:首先看十进制是如何做的: 5+7=12,三步走第一步:相加各位的值,不算进位,得到2。第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最终结果。第三步:重复上述两步,只是相加的值变成上述两步的得到的结果2和10,得到12。 同样我们可以用
阅读全文
摘要:每次看到能用位运算解决的问题就会想用博客记录下来 位运算中异或的性质:两个相同数字异或=0,一个数和0异或还是它本身。 当只有一个数出现一次时,我们把数组中所有的数,依次异或运算,最后剩下的就是落单的数,因为成对儿出现的都抵消了。 依照这个思路,我们来看两个数(我们假设是AB)出现一次的数组。我们首
阅读全文
摘要:今天刷题碰到一个神仙解法,真是溜,记录一下: 长度相同有公共结点,第一次就遍历到;没有公共结点,走到尾部NULL相遇,返回NULL长度不同有公共结点,第一遍差值就出来了,第二遍一起到公共结点;没有公共,一起到结尾NULL。 例如:当两个链表长度不同有公共节点时,bc+cd+ac = ac+cd+bc
阅读全文
摘要:1、用快慢指针从头节点开始,快指针一次走两步,慢指针一次走一步,若有环,必然会相遇。 2、将其中一个指针重置到头节点,另一个指针指向相遇节点,然后以相同速度走,再次相遇必然是环的入口节点 当相遇时: 然后将一个指针重置到头节点,另一个指针指向相遇节点,然后以相同速度走,再次相遇必然是环的入口节点:
阅读全文
摘要:平衡二叉树:一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 判断标准:如果以每一个点作为头结点的树都是平衡树,则整棵树是平衡树 (1)左树是否平衡 (2)右树是否平衡 (3)再都是平衡情况下,左树高度? (4)再都是平衡情况下,右树高度? 进阶:树形DP 搜
阅读全文
摘要:用递归的方法实现前序遍历,中序遍历,后序遍历: 用递归的方法遍历的时候,其实每个节点都遍历了三遍,根据打印时间的不同,即可实现前序中序及后续,这就是三个遍历代码一样而打印顺序不一样的原因 用非递归的方法实现前序遍历,中序遍历,后序遍历: 为什么用栈来实现遍历二叉树,而不用队列? 因为树是一个自上而下
阅读全文
摘要:今天刷leecoda发现n&(n-1)这个用法,觉得很神奇,记录一下 1,求一个int类型数是否为2的幂 当n=4时,二进制为:0100 n-1=3,二进制为:0011 则:n&(n-1)==0 可以看出,凡是2的幂,均是二进制数的某一高位为1,且仅此高位为1,比如4,0100;8,1000。那么它
阅读全文
摘要:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素
阅读全文
摘要:题目:编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 思路:这道题在很早以前已经学习过相关解法,所以一看到就有思路。 这道题的特点是:右上角的元素在一行中最大,在列中为最小。所以
阅读全文
摘要:题目:给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。 思路:因为众数出现次数大于【n/2】,所以先将数组排序的话,中位数肯定就是众数了,哈哈哈哈 这里我直接用了sort()函数,
阅读全文
摘要:题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 由于前段时间一直在学习位运算,就想到了用异或操作来做这道题,异或操作,两个相同的数异或结果为0,一个数跟0异或是这个数本身。记录一下。
阅读全文