Billy's Blog

欢迎访问我的博客

72. Edit Distance

给你两个单词word1,word2,使用最少的次数将word1转化为word2。你只可以进行下面三种操作: 1、插入一个字符  2、删除一个字符  3、替换到一个字符。  递归求解(记忆化搜索) class Solution { int[][] memoized = nul...

2018-09-08 22:06:47

阅读数:29

评论数:0

410. Split Array Largest Sum

 题目给的例子中,output为18,假如结果是17,那么对于nums数组分析得到的m的值必定是大于2的。 此时分成的数组是[7,2,5],[10], [8]。 也就是说output和m之间是负相关的。 public boolean guess(long mid, int[] n...

2018-08-11 22:10:43

阅读数:566

评论数:0

322. Coin Change

int maxVal = 1000000000; // 把非法的值设置为我们期望方向的反方向 public int search(int idx, int amount, int[] coins) { if (amount == 0) return 0; if (amou...

2018-08-08 22:32:53

阅读数:138

评论数:0

202. Happy Number

对于某一个正整数,如果对其各个位上的数字分别平方,然后再加起来得到一个新的数字,再进行同样的操作, 如果最终结果变成了1,则说明是快乐数,如果一直循环但不是1的话,就不是快乐数,利用推导出来的性质,非快乐 数有个特点,循环的数字中必定会有4 。   boolean isHapp...

2018-08-01 22:43:28

阅读数:146

评论数:0

268. Missing Number

利用等差数列的求和公式求出0到n之间所有的数字之和,然后再遍历数组算出给定数字的累积和,然后做减法, 差值就是丢失的那个数字。 public int missingNumber(int[] nums) { long n = nums.length; return (int...

2018-08-01 22:28:57

阅读数:141

评论数:0

258. Add Digits

找规律:  ab % 9 = (a*9+a+b)%9 = (a+b)%9   abc = a*100 + b*10 + c  abc % 9 = (a*99 + b*9 +a + b + c)%9 = (a+b+c)%9  int addDigits(int num) { i...

2018-08-01 22:17:24

阅读数:141

评论数:0

198. House Robber

1. 常规思路(TTL) public int rob(int[] nums) { return solve(nums.length-1, nums); } /** * @param idx 现在抢到的第几家店 * @param nums * @retu...

2018-07-27 19:46:16

阅读数:158

评论数:0

120. Triangle

给出一个三角形状的整数list,从第一行开始向下移动,每次只能向下一行相邻的数移动,要求求出从第一行到 最后一行所经过的数字的和最小的方法。 1. 自顶向下计算 public int minimumTotal(List<List<Intege...

2018-07-24 17:54:11

阅读数:159

评论数:0

48. Rotate Image

给你一个 n x n的2D矩阵,代表一张图片,将这个图片旋转90度。1. 常规思路(申请额外空间) public void rotate(int[][] matrix) { // 先对matrix的情况进行判断 if (matrix == null || matrix.length ==...

2018-06-02 16:07:56

阅读数:79

评论数:0

90. Subsets II

给你一个可能包含重复元素的集合,返回所有可能的子集。1. 回溯法public List<List<Integer>> subsetsWithDup(int[] nums) { List&l...

2018-05-25 17:08:23

阅读数:81

评论数:0

78. Subsets

给你一个包含不同整数的集合,返回它所有可能的子集。1. 回溯法public List<List<Integer>> subsets(int[] nums) { List<List&a...

2018-05-25 16:54:14

阅读数:71

评论数:0

47. Permutations II

给你一个包含重复数字的集合,要求返回所有唯一的排列数。1. 回溯法 public List<List<Integer>> permuteUnique(int[] nums) { List&...

2018-05-25 16:18:00

阅读数:79

评论数:0

43. Multiply Strings

给你两个以字符串形式表示的非负整数num1,num2,以字符串的形式返回它们的乘积。1. 常规思路使用数组来模拟两个数相乘的计算过程,每一次计算的结果都存放到一个临时数组中,注意计算过程中的进位问题。public String multiply(String num1, String num2) ...

2018-05-22 21:17:43

阅读数:82

评论数:0

40. Combination Sum II

给你一个候选数字的集合(不含重复的数字)和一个目标数,找出候选集中所有唯一的组合数,其中组合数的和为目标数。候选集中的每一个数字只允许在组合中出现一次。1. 回溯法 public List<List<Integer>&amp...

2018-05-21 17:24:04

阅读数:77

评论数:0

39. Combination Sum

给你一个候选数字的集合(不含重复的数字)和一个目标数,找出候选集中所有唯一的组合数,其中组合数的和为目标数。同样的数字可以使用多次。1. ...

2018-05-21 17:21:21

阅读数:97

评论数:0

88. Merge Sorted Array

给定两个已排好序的数组nums1和nums2,将数组nums2合并到nums1中。1. 常规思路先将数组nums2的值加入到nums1中,在合并后的数组nums1进行排序。public void merge(int[] nums1, int m, int[] nums2, int n) { ...

2018-05-12 17:03:07

阅读数:109

评论数:0

83. Remove Duplicates from Sorted List

给你一个排好序的链表,删除重复元素,使所有元素仅出现一次。1. 常规思路从前向后遍历所有的元素,只要下一位置的元素与当前位置的相同,就跳过,扫描完整个链表就结束。public ListNode deleteDuplicates(ListNode head)     { // 先对传入的链表的...

2018-05-12 16:43:43

阅读数:105

评论数:0

54. Spiral Matrix

给你一个m行n列的矩阵,以螺旋形的顺序输出矩阵中所有的元素。

2018-05-09 20:14:00

阅读数:252

评论数:0

70. Climbing Stairs

你正在爬楼梯,需要n个步骤才能到达顶部。每一次你可以爬1步或2步。有多少种不同的方法可以爬到顶端?注:给定的n为正整数。1. 动态规划思想思路:当n<=1,爬1步当n>1时,对于第i个台阶,到达该台阶有两种方法,从第i-1个台阶上迈一步,或从第i-2个台...

2018-04-30 21:28:50

阅读数:106

评论数:0

69. Sqrt(x)

计算并返回x的平方根,其中x是一个非负整数。由于返回类型是整数,所以小数位数被截断,并且返回结果的整数部分。1. 直接使用java的sqrt()函数int mySqrt(int x) { if (x < 0) { return -1; } return (int)...

2018-04-30 20:34:16

阅读数:108

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭