Loading

摘要: 上图表示常用的二分查找模板: 第一种是最基础的,查找区间左右都为闭区间,比较后若不等,剩余区间都不会再包含mid;一般在不需要确定目标值的边界时,用此法即可。 第二种查找区间为左闭右开,要确定target左边界时,若nums[mid] == target,取right = mid: int left 阅读全文
posted @ 2021-09-01 17:41 WINLSR 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 推荐学习labuladong大佬的动态规划系列文章:先弄明白什么是动态规划即可,不必一次看完。接着尝试自己做,没有思路了再回过头看相应的文章。 动态规划一般可以由 递归 + 备忘录 一步步转换而来,不必被名字唬住。通常只要找到状态转移方程问题就解决了一大半,至于状态的选择只要题目做多了自然就会形成经 阅读全文
posted @ 2021-09-01 09:22 WINLSR 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 模板 result = {} void backtrack(选择列表, 路径) { if (满足结束条件) { result.add(路径) return } for 选择 in 选择列表 { 做选择 backtrack(选择列表,路径) 撤销选择 } } 核心就是从选择列表里做一个选择,然后一直递 阅读全文
posted @ 2021-08-31 19:23 WINLSR 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 栈 155. 最小栈 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 class MinStack 阅读全文
posted @ 2021-08-30 17:24 WINLSR 阅读(185) 评论(0) 推荐(1) 编辑
摘要: 二叉树的遍历 递归: void traverse (TreeNode root) { if (root == null) { return null; } //前序遍历位置 traverse(root.left); //中序遍历位置 traverse(root.right); //后序遍历位置 } 阅读全文
posted @ 2021-08-30 09:15 WINLSR 阅读(172) 评论(0) 推荐(1) 编辑
摘要: 用户态与核心态?哪些操作会导致用户态切换到核心态? 用户态与核心态是指操作系统两种运行级别。操作系统核心的功能与服务(进程)运行在内核态,例如:进程管理、内存管理、设备管理、文件管理等;用户进程只能访问用户代码和数据,当用户进程要访问内核态级别的功能与服务(进程)时,需要通过系统调用来实现。 通常, 阅读全文
posted @ 2021-08-19 19:15 WINLSR 阅读(488) 评论(0) 推荐(7) 编辑
摘要: 83. 删除排序链表中的重复元素 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表。 class Solution { public ListNode deleteDuplicates(ListNode hea 阅读全文
posted @ 2021-08-08 15:40 WINLSR 阅读(109) 评论(0) 推荐(1) 编辑
摘要: 912. 排序数组 给你一个整数数组 nums,请你将该数组升序排列。 归并排序 public class Sort { //归并排序 public static int[] MergeSort(int[] arr) { int[] temp = new int[arr.length]; merge 阅读全文
posted @ 2021-08-08 09:07 WINLSR 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 461. 汉明距离 思路:统计 x 和 y 异或得到的数中 1 的个数。异或时比特位相同得 0,否者得 1。 class Solution { public int hammingDistance(int x, int y) { int res = x ^ y; return countbits(r 阅读全文
posted @ 2021-08-05 23:12 WINLSR 阅读(13) 评论(0) 推荐(0) 编辑
摘要: TCP(传输层) TCP报文段头部 每个 TCP 段都包含源端和目的端的端口号,用于寻找发送方和接收方应用进程。这两个值加 上 IP 首部中的源端 IP 地址和目的端 IP 地址唯一确定一个 TCP 连接。 首部固定部分各字段意义如下: 源端口和目的端口:各占 2 个字节,分别写入源端口和目的端口。 阅读全文
posted @ 2021-08-03 16:39 WINLSR 阅读(396) 评论(2) 推荐(1) 编辑
摘要: 337. 打家劫舍 III 思路:后序遍历 + 动态规划 推荐题解:树形 dp 入门问题(理解「无后效性」和「后序遍历」) /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode 阅读全文
posted @ 2021-07-31 11:27 WINLSR 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 253. 会议室 II(NO) 279. 完全平方数 class Solution { public int numSquares(int n) { // dp[i] : 组成和为 i 的最少完全平方数个数 // base case: dp[0] = 0; int[] dp = new int[n 阅读全文
posted @ 2021-07-17 04:39 WINLSR 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 207. 课程表 思路:根据题意可知:当课程之间不存在 环状 循环依赖时,便能完成所有课程的学习,反之则不能。因此可以将问题转换成: 判断有向图中是否存在环。使用 拓扑排序法 : 构建 入度表:记录每个结点的入度数; 构建 邻接表:记录每个结点的后继结点; 将入度为0的结点加入队列,开始遍历; 当一 阅读全文
posted @ 2021-07-17 04:32 WINLSR 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 142. 环形链表 II 思路:快慢指针,快慢指针相遇后,慢指针回到头,快慢指针步伐一致一起移动,相遇点即为入环点 /** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * Li 阅读全文
posted @ 2021-07-06 16:43 WINLSR 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 102. 二叉树的层序遍历 思路:使用队列。 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() { 阅读全文
posted @ 2021-07-05 11:46 WINLSR 阅读(16) 评论(0) 推荐(0) 编辑