随笔分类 -  leetCode刷题

摘要:确定dp数组以及下标的含义 确定递归公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组 斐波那契数(与爬楼梯思路一样) public int fib(int n) { //dp是第i下标的斐波那契数 int[] dp=new int[n+1]; if(n==0){ return 0; } if 阅读全文
posted @ 2025-04-03 15:14 Dyj07 阅读(22) 评论(0) 推荐(0)
摘要:前后中遍历指的是中间节点遍历的顺序,使用栈来实现 递归算法考虑三要素 确定递归函数的参数和返回值 确定终止条件 确定单层递归的逻辑 前序遍历(递归) 递归是调用自身函数,代码量少但可能会出现栈溢出; public class FirstTest { static List<Integer> resu 阅读全文
posted @ 2025-03-11 16:37 Dyj07 阅读(18) 评论(0) 推荐(0)
摘要:组合(剪枝) 特别注意剪枝,k-temp.size()表示剩余的需要组合的个数 n-(k-temp.size())表示i至多到哪个位置 class Solution { List<List<Integer>> result=new ArrayList<>(); List<Integer> temp= 阅读全文
posted @ 2025-03-10 21:40 Dyj07 阅读(15) 评论(0) 推荐(0)
摘要:移除元素 代码报错原因,在快指针进行判断时没有判断是否超出边界。 j<nums.length 思想:使用快慢指针,初始化两个指针都指向第一个元素 当快指针==val值时,快指针后移一位,循环此操作; 当快指针!=val时,将快指针的值赋给慢指针,快慢指针皆往后移动一位 int j=0; int i= 阅读全文
posted @ 2025-02-05 10:01 Dyj07 阅读(32) 评论(0) 推荐(0)
摘要:反转字符串II 思路:将begin到begin+k-1的部分进行翻转,其中中间节点的下标值为begin+k-1,一轮结束后新的起点下标为begin=begin+2*k,判断条件为字符串长度>begin+k-1。 java基础: StringBuffer中不需要将地址再传回,使用方法时会将地址作为形参 阅读全文
posted @ 2025-01-06 09:45 Dyj07 阅读(28) 评论(0) 推荐(0)
摘要:有效的字母异位词 思想和滑动窗口找子串很像都是将字符串中的字符统计情况放到数组中,这个不需要进行窗口的移动,因为两个的长度必须相同。 快乐数 没有注意到提示无限循环,即当平方和重复出现时,不可能为快乐数,此时使用set对平方和进行存储,只有和前面都不重复时才会将此时的平方和放到set中,若重复则不为 阅读全文
posted @ 2024-12-23 10:19 Dyj07 阅读(31) 评论(0) 推荐(0)
摘要:链表 移除链表元素 对于链表来说,删除头节点和中间节点具体操作不一样是因为想要删除一个中间节点,必须要知道该节点的前一个节点,而头节点没有前一个节点。 使用虚拟头节点,统一节点的删除操作,用一个虚拟头节点的next指向head,这个链表中的每个元素都会有前一个节点,从而对所有节点都可以统一使用前一个 阅读全文
posted @ 2024-12-16 11:28 Dyj07 阅读(46) 评论(0) 推荐(0)
摘要:数组 二分查找 题解:如果等于nums[middle],返回middle;否则返回left或者low。 public int search(int[] nums, int target) { int left=0; int right=nums.length-1; int mid; while(le 阅读全文
posted @ 2024-12-16 11:21 Dyj07 阅读(20) 评论(0) 推荐(0)