- 博客(14)
- 资源 (2)
- 收藏
- 关注
原创 有效的完全平方数
public boolean isPerfectSquare(int num) { int i = 1, j=num; while (i <=j) { int mid = (i + j)/2; if (mid == (num * 1.0/mid)) // 防止乘法溢出 ...
2019-03-08 11:39:20 165
原创 寻找比目标字母大的最小字母
public char nextGreatestLetter(char[] letters, char target) { // 先判断最后一个字母是否比目标字母大 if (letters[letters.length-1] <= target) return letters[0]; int low = 0, high = letters.length-1...
2019-03-08 11:29:45 496
原创 区间列表的交集
解题思路:先要考虑两个集合存在交集的情况。通过分析,可以知道当a.s >= b.s时,交集为[a.s, min(a.e, b.e)],同理当b.s >= a.s时,交集为[b.s, min(a.e, b.e)]。 public Interval[] intervalIntersection(Interval[] A, Interval[] B) { Arra...
2019-03-07 12:15:09 958
原创 两数之和II
public int[] twoSum(int[] numbers, int target) { int i = 0, j = numbers.length-1; int[] ret = new int[2]; while (i < j) { while (target > 0 && numbers[j] > target) ...
2019-03-06 12:09:07 176
原创 删除排序数组中的重复项
public int removeDuplicates(int[] nums) { int j = 1; // 慢指针 for (int i=1; i<nums.length; i++) { if (nums[i] != nums[i-1]) { nums[j++] = nums[i]; } } return j; }...
2019-03-06 11:38:18 111
原创 有序数组的平方
public int[] sortedSquares(int[] A) { int i = 0, j = A.length-1; int k = A.length-1; int[] tmp = new int[A.length]; while (i <= j) { if (A[i] * A[i] <= A[j] * A[j]) { ...
2019-03-06 11:12:03 221
原创 移除元素
双指针:两个指针分别指向首尾,遍历头指针,遇到等于val时,遍历尾指针,找到不等于val的值,进行交换,两指针相撞时,结束。 public int removeElement(int[] nums, int val) { int i = 0, j = nums.length-1; // 将等于val的数移动到数组右边 while (i <= j) { ...
2019-03-05 13:14:16 157
原创 寻找重复数
解题思路:二分法。在区间[1, n]中搜索,首先求出中点mid,然后遍历整个数组,统计所有小于等于mid的数的个数,如果个数小于等于mid,则说明重复值在[mid+1, n]之间,反之,重复值应在[1, mid-1]之间,然后依次类推,直到搜索完成,此时的right就是我们要求的重复值。 public int findDuplicate(int[] nums) ...
2019-03-04 21:05:20 592
原创 两个数组的交集
二分法: 先排序,对两个数组做归并运算,使用set来去重。 public int[] intersection(int[] nums1, int[] nums2) { int i = 0, j = 0, k = 0; // 排序 Arrays.sort(nums1); Arrays.sort(nums2); HashSet<Integer> ...
2019-03-04 20:41:38 326
原创 反转字符串中的元音字母
public String reverseVowels(String s) { int i = 0; int j = s.length()-1; char c; char[] ss = s.toCharArray(); while (i < j) { while (i < j && containsVowels(ss[i])...
2019-03-04 20:16:52 452
原创 盛最多水的容器
解题思路:两个指针,一前一后,分别指向第一个元素和最后一个元素,计算此时容纳水的容量,根据两边的高度调整移动方向,指针向高的那边移动(贪心性质)两个指针相撞时就结束。 public int maxArea(int[] height) { int i = 0; int j = height.length-1; int maxWater = 0; whil...
2019-03-04 16:38:40 159
原创 最低票价
int[][] memo = null; // 备忘录 int r(int idx, int[] days, int[] costs, int deadLine) { int a, b, c, min; if (idx == days.length) return 0; // 有效期超过最后一天 if (deadLine >= days[days...
2019-03-01 18:48:53 310
原创 完全平方数
解题思路:该题目与Coin Change很相似,先找出到n为止的所有的完全平方数,然后暴力法进行搜索。当然,可以继续优化为动态规划。 int[][] memo = null; // 备忘录 public int sovle(int n, int [] squares, int idx) { if (n == 0) // 找到一种组合 return 0; ...
2019-03-01 15:28:37 1147
原创 翻转矩阵后的得分
解题思路:先判断每一行的第一个元素,是否是0,如果是,就翻转该行;判断第2列到最后一列中,每列0的个数是否大于1的个数,如果是,就翻转该列;之后按照二进制数的解释进行计算。 public int matrixScore(int[][] A) { if (A == null || A.length == 0) return 0; int rows = A....
2019-03-01 14:53:39 176
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人