- 博客(20)
- 收藏
- 关注
原创 训练营练习-Day25&回溯2
Leetcode 216 https://leetcode.cn/problems/combination-sum-iii/
2023-05-15 23:13:18
37
原创 训练营练习-Day20&二叉树6
if (rightIndex - leftIndex == 1) {// 只有一个元素。if (rightIndex - leftIndex < 1) {// 没有元素了。// 最大值所在位置。// 根据maxIndex划分左右子树。
2023-05-14 22:19:20
68
1
原创 训练营练习-Day18&二叉树5
if (root.left == null && root.right == null) { // 包含target 减去路径最后为0和不为0情况。if (traversal(root.right, targetSum)) {// 递归。if (traversal(root.left, targetSum)) {// 递归。if (i == 0){// 遍历到最底层,第一个值。
2023-05-10 23:43:15
47
原创 训练营练习-Day17&二叉树4
if (leftNum == -1) { // 左子树为-1表示已经不是平衡树了。if (rightNum == -1) { // 右子树为-1表示已经不是平衡树了。// 左右子树高度差大于1,return -1表示已经不是平衡树了。
2023-05-05 23:20:39
66
原创 训练营练习-Day15&二叉树3
本题可以使用前序(中左右),也可以使用后序遍历(左右中),使用前序求的就是深度,使用后序求的是高度。if (root.right == null) { // 右子树为null,1+左子树高度。if (root.left == null) { // 左子树为null,1+右子树高度。解法:后序遍历计算高度。解法:后序遍历计算高度。
2023-05-04 23:51:10
38
原创 训练营练习-Day15&二叉树2
public void 迭代(TreeNode node) {解法:迭代遍历,借助队列不断收取各层结果。//递归(root,0);二叉树层序遍历:借助队列实现。
2023-05-03 22:56:02
36
原创 训练营练习-Day14&二叉树1
解法:前序遍历,递归遍历,中左右。解法:中序遍历,递归遍历,左中右。解法:后序遍历,递归遍历,左右中。二叉树数据定义:链表。
2023-05-03 22:27:03
42
原创 训练营练习-Day13&栈与队列3
if (entry.getValue() > pg.peek()[1]) { //当前元素出现次数大于小顶堆的根结点(这k个元素中出现次数最少的那个)i--) { //依次弹出小顶堆,先弹出的是堆的根,出现次数少,后面弹出的出现次数多。//弹出队头(小顶堆的根结点),即把堆里出现次数最少的那个删除,留下的就是出现次数多的了。
2023-05-01 14:21:57
40
原创 训练营练习-Day11&栈与队列2
deque.isEmpty() && deque.peek().equals(c)){ // 堆栈里面不为空,拿出来和串里字符对比,相同就消除,否则入堆栈。// 第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false。// 第三种情况:遍历字符串匹配的过程中,栈已经为空了,没有匹配的字符了,说明右括号没有找到对应的左括号return false。} else if (s.equals("/")) { // 除法注意谁除谁,后入先出。
2023-05-01 12:44:44
30
原创 训练营练习-Day7&哈希2+双指针N数之和
i++) { // count>0 说明ransomNote字符比magazine多。if (count > 0) { // 这里是要思考的点,count为0完全匹配,count>0和count 0 && nums[i] == nums[i - 1]) { // 去重a,这里很难理解。if (map.containsKey(0 - temp)){ // 目标值减两数之和是否在哈希中。// 去重逻辑应该放在找到一个三元组之后,对b 和 c去重。
2023-04-26 00:45:26
53
原创 训练营练习-Day6&哈希1
/ 统计在nums1中出现并且也在nums2中出现的不重复元素。// 统计nums1中不重复元素。set.contains(n)) { // n不等于1且set不包含n。// s中字符加到数组计数。// key 放数组值,value放索引下标。// t中字符从数组减去。= 0){ // 数组中存在不为0元素,说明有多余字符。for (Character c : chars) { // 个位、十位按字符串取。解法:哈希数组(数据范围较小使用)计数,相同消掉,统计数组中是否存在不为0情况。
2023-04-25 00:04:19
53
原创 训练营练习-Day4&链表2
i++) { //快指针先走N步,然后同时移动快慢指针,实际走了n-1步,当快指针指向null时,慢指针指向倒数n的前一个位置。public ListNode swapPairs(ListNode head) { // 1 -> 2 ->3->4 虚拟头节点后 0 -> 2->1-> 4->3。倒数位置需要使用快慢指针,让快指针先走N步,然后快慢指针同时移动。// 顺序不能乱,快指针先走,快慢指针同时移动时候。// 顺序不能乱,慢指针后走,快慢指针同时移动时候。// 临时节点,保存两个节点后面的节点。
2023-04-22 22:29:20
50
1
原创 训练营练习-Day3&链表1
public ListNode removeElements虚拟头结点(ListNode head, int val) {解法二:使用虚拟头结点,虚拟头节点next指向head头节点联系起来。// 原链表的头节点是虚拟头结点的next指向。// 虚拟头节点下next是原链表的头节点。解法一:原链表区分头节点删除和非头结点删除。
2023-04-21 22:32:48
145
原创 训练营练习-Day2数组2
public static int[] sortedSquares相向双指针(int[] nums) { // 数组有序特性,平方后两边最大,相向双指针两边往中间聚拢。// 更新结果集,+1与否的判断?public static int minSubArrayLen同向双指针(int target, int[] nums) {// sum开始添加右指针元素。while (sum >= target) { // 当和满足题目条件。
2023-04-20 23:00:53
313
原创 训练营练习-Day1数组1
else if (nums[mid] > target){ // [1,2]本身包含右边界,下次搜索需要更新right。public static int removeElement暴力(int[] nums, int val) { // 暴力解法。} else if (nums[mid] > target){ // [1,2)本身不包含右边界,等于即可。if (nums[i] == val){ // 发现需要移除的元素,就将数组集体向前移动一位。// 此时数组的大小-1。// 循环条件
2023-04-19 20:54:26
290
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人