03 2021 档案
摘要:二分查找的理解要加强。 对于数组1 2 3 4 5 5 5 5 6 7 8 两种思路都是致力于把循环区间缩减至0。 注意二分查找的查找区间是左闭右开的。 邓书的版本理解为找第一个大于target的数: 当target>=nums[mid],那么狠狠把下一次搜索区间往前移,因为显然nums[mid]及
阅读全文
摘要:这道题,用归并可太秀了。学习一下链表归并的写法(递归,最好也要知道飞递归写法) 关于对链表归并递归解法的理解,这一篇讲得好: 一看就会,一写就废?详解递归 非递归解法就是迭代,穿针引线,改变指针。最好设置一个哨兵节点,操作方便。在“21. 合并两个有序链表”这一题中自己写了一遍,感觉不够优雅,看看别
阅读全文
摘要:这个题蛮有意思的。学习了大佬的思路。 注意边界情况,当输入空数组时,返回了一个匿名数组的写法。 以及保证数组不越界,及时退出循环的思路。 我原来写的while循环条件是(cnt<num),且没有写退出循环的四个判断,是有问题的。 class Solution { public int[] spira
阅读全文
摘要:1.为什么这道题要用这个解法,是怎么联想到这个解法的 2. 这个解法一般的流程是什么,用最简单的语言总结。 3. 之前为什么没有想到这个解法,是哪里卡住了。 4.这道题在同类的解法中的变化是什么。
阅读全文
摘要:这题和借鉴了27题的思路,创建一个镜像二叉树然后一一比较。 问题在于,27题实现的代码更改的是原树,更改之后原树也变了。 这是关于指针的理解,在创建一个镜像二叉树时,必须确保是真的创建了而不是在原树上更改,因为还要用到原树。 /** * Definition for a binary tree no
阅读全文
摘要:这个题太妙了。递归真的很神奇,有人说一步步理解没必要,好像是的,理解递归函数要实现的功能是关键。 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * Tree
阅读全文
摘要:这个题很烦。不告诉什么样的数字是合法的,面向测试用例编程。 最简单的思路。 class Solution { public boolean isNumber(String s) { char[] ss=s.trim().toCharArray(); boolean hasNum=false,hasS
阅读全文
摘要:很简单的题,我给想复杂了。无语子。还漏看了l2为null时会导致错误。 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) {
阅读全文
摘要:我真的服了。 关于tmp应该保存什么值,糊涂了,自己画内存图才明白。 tmp应该存的是oldHead.next而不是oldHead。难怪一直在循环里跳不出来。debug好久。 tmp要存将要被改变,但原来的值还要用的变量! /** * Definition for singly-linked lis
阅读全文
摘要:这题好难。自己没想到用动态规划,敲了很久,敲出了可以通过400个测试点的代码,还是有一些情况没有考虑到。不舍得删,记录一下。对输入用例 "aaa" "ab*a*c*a" 不能给出正确答案 class Solution { public boolean isMatch(String s, String
阅读全文
摘要:快速幂。处理当指数为负数时的情景,还要注意int32的数据范围。 class Solution { public double myPow(double x, int n) { if(x==0) return 0; double res=1; long b=n; if(n<0) { x=1/x; b
阅读全文
摘要:这道题绝了,虽然是简单题,但是可以暴露不少问题。 // you need to treat n as an unsigned value public int hammingWeight(int n) { int cnt =0; int tmp; while(n!=0){//!!不可以写成n>0,因
阅读全文
摘要:这道题最优解是贪心+快速幂。 但贪心算法还必须清楚背后的数学定理才会有思路,没意思。 学习如何用大数BigInteger和快速幂的代码即可。(虽然我没用到快速幂) 注意必须对数组手动初始化,因为不会帮你默认初始化,不手动初始化在n=10时会出错嗯。 1 import java.math.*; 2 c
阅读全文
摘要:我服了。动态规划杀我。 可以说一说解决动态规划的思路(只做了两三道就总结了emmm) 关键词:最长/最短/最多等最值问题,计数问题,是否存在问题。 1.识别动态规划问题 --重叠子问题:大问题可以分为一个个子问题。和分治策略分割的子问题不同(分治问题的子问题是相互独立的),动态规划的子问题是相互重叠
阅读全文
摘要:本题如果用递归做,超时。注意要对结果取余。递归+记忆可以通过。如下: 1 class Solution { 2 int[] arr=new int[101]; 3 {//这里不加大括号会报错 4 Arrays.fill(arr,-1); 5 } 6 public int fib(int n) { 7
阅读全文
摘要:1 class CQueue { 2 3 int temp,size; 4 LinkedList<Integer> stack1,stack2; 5 public CQueue() { 6 stack1=new LinkedList<>(); 7 stack2=new LinkedList<>();
阅读全文
摘要:递归问题的分析 特点:大问题可以划分为形式相同的小问题; 步骤:明确递归函数要解决的问题/要得到的结果(首先不要考虑问题解决的细节,知道问题是什么很重要); 终止递归的条件; 分析问题隐含的等式关系。 根据前序遍历和中序遍历重建二叉树。 根据前序遍历找到树的根节点--在中序遍历找到这个根节点,根据中
阅读全文
摘要:对于范围概念来说,Java指的范围包括类内部,所在包下,子父类之间和外部包4种情况。 如果一个成员需要被外部包所访问,则必须使用public修饰符;如果一个成员需要被定义在不同包下的子类所访问,则可以使用public或protected修饰符;如果一个成员需要被本包下的其他类所访问,则可以不用写任何
阅读全文
摘要:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2]输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000 /** * Definition for singly-linked list. * public class Li
阅读全文
摘要:题目描述: 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8
阅读全文

浙公网安备 33010602011771号