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 评论