- 博客(7)
- 收藏
- 关注
原创 二分查找法解题思路
一般二分查找法是针对数组中的排列规律进行操作,也就是对索引的规律进行操作。 切记,尽量不要对值的变化进行操作。 最后return 才能是nums[index] 假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。 你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。 在 public int firstBadVersion(int n) { int l = 1;
2021-11-19 15:32:15 194
原创 分别改变左边和右边的情况都可能满足怎么办
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。 如果碰到左右都在可能变化的情况,那就使用return fun(改变左边的情况 || 改变右边的情况) 再在下面编写一个函数。 public boolean validPalindrome(String s) { char[] c = s.toCharArray(); int l = 0; int r = s.length()-1; int re = 1;
2021-11-18 17:19:09 54
原创 双指针的问题不一定要创建链表,可以用数组下标体现
第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit。 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。 返回载到每一个人所需的最小船数。(保证每个人都能被船载)。 public int numRescueBoats(int[] people, int limit) { Arrays.sort(people); int l = 0; int r = people.length-1; int
2021-11-18 12:45:01 299
原创 只遍历树中的一条路径来和题目条件比较的方法
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。 叶子节点 是指没有子节点的节点。 public boolean hasPathSum(TreeNode root, int targetSum) { if(root == null){ return false; } if(root.left==nu
2021-11-18 10:33:18 185
原创 求树的路径类问题可以转变为求树的节点个数
因为树的路径=节点-1 所以可以转化,而节点又可以通过求深度+1求得。大致就是这个思路 例如:给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 int ans = 0; public int diameterOfBinaryTree(TreeNode root) { ans = 1; maxDepth(root); return ans -1; }
2021-11-17 16:35:54 33
原创 在一个数组中找到target的两数之和,返回两个数的下标
输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 为了节约时间,可以将哈希表中的键设为数组的值,哈希表中的值设为输出目标(也就是返回的数的下标)。 Map<Integer, Integer> hashtable = new HashMap<Integer, Integer>(); for (int i = 0; i < nums
2021-11-16 14:56:16 232
原创 字符串中找不同的元素
lc389 int[] cnt = new int[26]; for (int i = 0; i < s.length(); ++i) { char ch = s.charAt(i); cnt[ch - 'a']++; } for (int i = 0; i < t.length(); ++i) { char ch = t.charAt(i);
2021-11-16 13:22:44 140
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人