2023-09-14 删除二叉搜索树的节点 删除二叉搜索树的节点 根据二叉搜索树的性质:如果目标节点大于当前节点值,则去右子树中删除;如果目标节点小于当前节点值,则去左子树中删除;如果目标节点就是当前节点,分为以下三种情况:其无左子:其右子顶替其位置,删除了该节点;其无右子:其左子顶替其位置,删除了该节点;其左右子节点都有:其左子树转移到其右子树的最左节点的左子树上,然后右子树顶替其位置,由此删除了该节点。第三种情况图示如下:代码如下:class Solution { public TreeNode deleteNode(TreeNode root, int key) { if (root == null)return null; if (key > root.val) root.right = deleteNode(root.right, key); // 去右子树删除 else if(key < root.val) root.left = deleteNode(root.left, key); // 去左子树删除... 2023-09-14 经典例题 0 阅读 0 评论 2023年09月14日 0 阅读 0 评论
2023-09-07 二分法查找 二分法查找 先贴代码:public int searchInsert(int[] nums, int target) { int i = 0; int j = nums.length - 1; while (i <= j) { int mid = i + (j - i) / 2; if (nums[mid] < target) { i = mid + 1; } else if (nums[mid] > target) { j = mid - 1; } else if (nums[mid] == target) { return mid; } } return i; }一定要注意! int mid = i + (j - i) / 2 不能写成 int mid = (i + j)... 2023-09-07 经典例题 0 阅读 0 评论 2023年09月07日 0 阅读 0 评论
2023-09-05 前缀之和(左右和是否相等) 前缀之和(左右和是否相等) 思路:代码:class Solution { public int pivotIndex(int[] nums) { int total = Arrays.stream(nums).sum(); int sum = 0; for (int i = 0; i < nums.length; ++i) { if (2 * sum + nums[i] == total) { return i; } sum += nums[i]; } return -1; } } 2023-09-05 经典例题 0 阅读 0 评论 2023年09月05日 0 阅读 0 评论
2023-09-05 Excel表列名称(进制转换问题) Excel表列名称(进制转换问题) 题目:给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。例如:A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ...思路:这是一道进制转换题,26一轮,用十进制数表示,所以是一道十进制转26进制问题 需要十分注意的点是:本题需要我们将从1开始,我们需要使用-1 熨平取模的问题。 因为x%26=[0,25] 但是我们取从[1-26]对应[A-Z] 直接取模 26%26=0 不在我们范围内 所以我们采用-1 [0-25]对应[A-Z] (26-1)%26 =25 25+'A'='Z'代码:class Solution { public String convertToTitle(int columnNumber) { StringBuilder sb = new StringBuilder(); while (columnNumber > 0) { columnNumber... 2023-09-05 经典例题 0 阅读 0 评论 2023年09月05日 0 阅读 0 评论
2023-03-22 二叉搜索树与双向链表(中等) 二叉搜索树与双向链表(中等) 这道题当时没做出来,其实是已经想到了使用中序遍历(中序遍历得到的结果就是链表的顺序)。但是不知道如何进行链表节点之间的连接。后面也思考到了每个子树的最右节点下一个连接的是根节点,这个其实就是中序遍历的思维后面看了题解知道了,可以设置两个全局变量,一个head,一个pre。head用于记录最后返回的结果(头节点),pre用于记录每次递归遍历到的节点的前一个节点,用于两点间连接。最后还要将首位相连(head.left = pre; pre.right = head;)此题得解代码如下:<div>class Solution { Node head, pre; public Node treeToDoublyList(Node root) { if(root==null) return null; dfs(root); head.left = pre; pre.right = head; return head; } public void dfs(Node ro... 2023-03-22 剑指offer(第二版) 0 阅读 0 评论 2023年03月22日 0 阅读 0 评论