随笔分类 - 刷题
摘要:class Solution { public: int TreeDepth(TreeNode* pRoot) { if(pRoot == NULL) return 0; int depth,left,right; left = TreeDepth(pRoot->left); righ...
阅读全文
摘要:int maxProduct(int length){ if(length < 2) return 0; if(length = 2) return 1; if(length = 3) return 2; int numof3 = length/3; if(length - numof3*3 == 1...
阅读全文
摘要:注意multiset的一个bug: multiset带一个参数的erase函数原型有两种。一是传递一个元素值,如上面例子代码中,这时候删除的是集合中所有值等于输入值的元素,并且返回删除的元素个数;另外一种是传递一个指向某个元素的iterator,这时候删除的就是这个对应的元素,无返回值。 https
阅读全文
摘要:https://blog.csdn.net/otuhacker/article/details/10366563 每次是小数的最后一个,然后用的next位置进行的交换,如果第二个数比第一个数小,就相当于第二数和自己进行交换 链表只能从前往后
阅读全文
摘要:1.2的幂 正确写法: 错误写法1: &符号的短路原则,如果&前面为false了就不会计算后面的了 错误写法2 ==符号的优先级比&高 2.4的幂 3.3的幂 https://blog.csdn.net/u014218090/article/details/80152446
阅读全文
摘要:Longest Increasing Subsequence 最长递增子序列 子序列不是数组中连续的数。 dp表达的意思是以i结尾的最长子序列,而不是前i个数字的最长子序列。 初始化是dp所有的都为1,最终的结果是求dp所有的数值的最大值。 674. Longest Continuous Incre
阅读全文
摘要:这个题是从左上角到右下角的路径和最小,实际就是一道dp题。 第一种写法是只初始化(0,0)位置,第二种写法则是把第一行、第一列都初始化了。个人更喜欢第二种写法,简单一点。 dp的右下角的值就为最终的值 第一种写法: 第二种写法:
阅读全文
摘要:class Solution { public: bool isValid(string s) { stack result; for(char c:s){ if(c == '(' || c == '[' || c == '{') result.push(c); else{...
阅读全文
摘要:121. Best Time to Buy and Sell Stock 题目的要求是只买卖一次,买的价格越低,卖的价格越高,肯定收益就越大 遍历整个数组,维护一个当前位置之前最低的买入价格,然后每次计算当前位置价格与之前最低价格的差值,获得最大差值即为结果 122.Best Time to Buy
阅读全文
摘要:这种题要分两步,第一步是“插空儿”,第二步是“筛” 1.rand7生成rand10 只要是10的倍数就好 概率计算: https://blog.csdn.net/excellentlizhensbfhw/article/details/81174138 再将这49个数分为两部分, {0, 1, 2,
阅读全文
摘要:1.two sum 用hash来存储数值和对应的位置索引,通过target-当前值来获得需要的值,然后再hash中寻找 错误代码1: Input:[3,2,4]6Output:[0,0]Expected:[1,2] 同一个数字不能重复使用,但这个代码没排除这个问题 错误代码2: Input:[3,3
阅读全文
摘要:1.这个通过partition实现topk,时间复杂度是o(logn*logn),也就是0(n),但需要修改原数组的顺序 下面这个代码本身有一些错误,并且throw excption会在牛客上报错 正确代码 2.用大根堆的做法的时间复杂度是o(nlogk)
阅读全文
摘要:1.二叉平衡树:左子树和右子树的深度差小于等于1 2.二叉搜索树:左子树小于根节点的值,右子树大于根结点的值 3.队列:push(),pop(),front(),back(),empty(),size() 4.vecotr: clear(),push_back(),pop_back() vector
阅读全文
摘要:牛客网上的题目还有一个额外的要求,就是不改变数组原始的前后数据,这种可以用队列来存储,或者把前后比较变为相邻的元素比较。 这个题目,主要要考察扩展性,用func函数就实现了扩展性。只需要改func函数,就可以实现负数移动到非负数前面,被3整除的数移到不能被3整除的数的前面 这个题主要是将数组前后进行
阅读全文
摘要:对于几进制,其实主要就是对进制取余和整除,取余的结果就是当前位的,整除的结果就是进位的。 67. Add Binary https://www.cnblogs.com/grandyang/p/4084971.html 从两个string的末尾开始转int型相加,注意carry的计算。 如果某一个数少
阅读全文
摘要:144. Binary Tree Preorder Traversal 前序的非递归遍历:用堆来实现 如果把这个代码改成先向堆存储左节点再存储右节点,就变成了每一行从右向左打印 如果用队列替代堆,并且先存储左节点,再存储右节点,就变成了逐行打印 94. Binary Tree Inorder Tra
阅读全文
摘要:第一题是输入数组的数值不相同,第二题是输入数组的数值有相同的值,第二题在第一题的基础上需要过滤掉那些相同的数值。 level代表的是需要进行选择的数值的位置。 78. Subsets 错误解法: 如果只看代码本身,不看继续的递归,整个for循环执行完成是同一层的所有节点。 level是同一层初始的开
阅读全文
摘要:53. Maximum Subarray 之前的值小于0就不加了。dp[i]表示以i结尾当前的最大和,所以需要用一个变量保存最大值。 动态规划的方法: 152. Maximum Product Subarray 最小值可能是负数,这个值可能变成最大值。 dp[i]表示以i结尾当前的最大乘积,所以需要
阅读全文
浙公网安备 33010602011771号