leetcode523. Continuous Subarray Sum

2019-12-31
阅读 3 分钟
1.9k
Given a list of non-negative numbers and a target integer k, write a function to check if the array has a continuous subarray of size at least 2 that sums up to a multiple of k, that is, sums up to n*k where n is also an integer.

leetcode464. Can I Win

2019-11-30
阅读 3 分钟
2.7k
In the "100 game," two players take turns adding, to a running total, any integer from 1..10. The player who first causes the running total to reach or exceed 100 wins.

leetcode516. Longest Palindromic Subsequence

2019-11-26
阅读 2 分钟
2.3k
Given a string s, find the longest palindromic subsequence's length in s. You may assume that the maximum length of s is 1000.

leetcode472. Concatenated Words

2019-11-01
阅读 3 分钟
2.5k
Given a list of words (without duplicates), please write a program that returns all concatenated words in the given list of words.A concatenated word is defined as a string that is comprised entirely of at least two shorter words in the given array.

leetcode446. Arithmetic Slices II - Subsequence

2019-10-15
阅读 3 分钟
1.8k
从一个无序的整数数组中,找到所有等差子数列的数量。这里需要注意,等差子数列要求从原数组中找出Pk个下标的元素,其中P0 < P1 < P2... < Pk,且满足A[P1]-A[P0] = A[P2] - A[P1] ... = A[Pk]-A[Pk-1]。

leetcode467. Unique Substrings in Wraparound String

2019-10-05
阅读 2 分钟
1.6k
已知s是由一系列有序的从a-z的字母循环构成的字符串,因此可知,任何一个在s中循环出现的字符串,一定是遵循a-z-a这样的一个顺序规律的。因此,假如在p中相邻两个字符并非连续的,则这两个字符一定不会是循环出现。如cac这个例子,因为ca和ac并非连续,因此这两个字母一定不会构成循环子字符串。

leetcode474. Ones and Zeroes

2019-10-02
阅读 2 分钟
1.7k
先是用深度优先遍历的思想进行了实现,结果很明显是超时了。接着采用动态规划的思想,其实这题就是背包问题的一个演化。假设已知道m个0和n个1能够从数组中前i个元素最多拼成多少个元素,则m个0和n个1能够从数组中前i+1个元素能够拼成最多的元素个数有如下两个场景:

leetcode376. Wiggle Subsequence

2019-05-06
阅读 3 分钟
2.1k
扭动序列是指数组中的相邻两个元素的差保证严格的正负交替,如[1,7,4,9,2,5]数组中相邻两个元素的差为6,-3,5,-7,3,满足扭动序列的要求。现在要求从一个数组中,找到长度最长的扭动子序列,并返回其长度。

leetcode368. Largest Divisible Subset

2018-12-08
阅读 2 分钟
1.8k
假设有一组值唯一的正整数数组,找到元素最多的一个子数组,这个子数组中的任选两个元素都可以构成Si % Sj = 0 或 Sj % Si = 0。

Leetcode309. Best time to sell stock with cooldown

2018-05-06
阅读 2 分钟
2.7k
和前面几题相比,这题还增加了一个限制条件,也就是说我们在抛出股票之后,还需要冷却一天才可以买入下一只股票。那么我们进行什么样的操作才能使收益最大呢?

leetcode 338. Counting Bits

2018-03-25
阅读 2 分钟
2.9k
这里除了暴力的计算每个数字中含有多少个1,我们可以使用动态规划的方法来计算i中有几个1。假设我们已经知道前i-1个数字分别有多少个1,而且i中含有k个数字,那么其实很容易的想到,i中1的个数等于前k-1位构成的数字的1的个数,加上第k位1的个数,即1或是0。还有一种等价的思路是第0位的1的个数(0或是1)加上1~k位构成...

leetcode 321. Create Maximum Number

2018-03-25
阅读 3 分钟
2.9k
首先采用分治法的思路,我们知道这K个数字中,必然有i个数组来自nums1,而剩下的k-i个数字必然来自nums2。那么问题变成从nums1中获取i个数,这i个数构成的数字最大,且这i个数字的相对位置不变。再从nums2中获取k-i个数,这k-i个数构成的数字最大,且这k-i个数字的相对位置不变。

leetcode 312. Burst Balloons

2018-03-17
阅读 3 分钟
2.7k
这里讲了一个炸气球小游戏的规则。当我们选中一个气球并炸掉它后,会得到该气球以及其相邻两个气球的分数的乘积,并加入我们的积分。之后该气球将消失,从而其左右两个气球成为相邻的气球。问如何选择气球才能使得积分数最高。

leetcode 300. Longest Increasing Subsequence

2018-03-14
阅读 2 分钟
3.3k
找到整数数组中最长的递增子数组。该子数组可以为不连续的。如题目中例子所示,[10, 9, 2, 5, 3, 7, 101, 18]得到的最长子数组为[2,3,7,101]。

leetcode322. Coin Change

2018-03-12
阅读 3 分钟
2.2k
这题本质上考察的是动态规划思想。这里有两种动态规划的方法,分别从递归和非递归的角度解决这个问题。具体的情况还是要看数据的分布情况来确定选择哪种方法。

leetcode140. Word Break II

2018-03-02
阅读 2 分钟
2.3k
现在有一个非空字符串s和一个非空的字典wordDict。现在向s中添加空格从而构成一个句子,其中这个句子的所有单词都存在与wordDic中。字典中不包含重复的单词。

leetcode132. Palindrome Partitioning II

2018-03-01
阅读 3 分钟
1.6k
这道题目的核心思想是动态编程,假设我们已经知道[0,1],[0,2]...[0,i-1]每个子字符串的最少分割数,那么我们可以得出[0,i]子字符串的最小分割数。我们只需要从第i个字符开始往回找所有可以和第i个字符构成回数,假设从第j个字符到第i个字符可以构成回数(0<=j<=i),那么以j作为分割线得到的最少分割数为cut[j-1]+1...

Leetcode188. Best Time to Buy and Sell Stock IV

2018-02-24
阅读 2 分钟
1.9k
这里采用了动态编程的思想。假设我们希望得到第j天最多进行i次交易的最大利润,我们首先想到的是,可以通过比较第j-1天最多进行i次交易的利润,以及第j-1天进行i-1次交易然后最后一次交易为卖出当天的股票所带来的利润。

leetcode263,264,313 ugly numbers

2018-02-09
阅读 5 分钟
2.2k
丑数是指只包含2,3,5质因数的数。因此6,8是丑数因为6=2*3,8=2*2*2,而14不是丑数因为14包含质因数7。现在写一个方法判断一个数字是否是丑数。

leetcode115. Distinct Subsequences

2017-09-05
阅读 3 分钟
1.7k
这时一道典型的DP题。也就是说,我们需要通过一个数据结构来记录临时结果从而支持我们在已知前面几个情况的场景下对后续情况进行计算。在这道题目中,如果我们想要计算S中含有几个T(假设S长度为n,T长度为m),那么我们只需要知道S[0...n]含有几个T[0...m-1]以及S[0...n-1]含有几个T[0...m-1]。从中归纳出最普遍的场景...

leetcode95-96 Unique Binary Search Trees I-II

2017-08-06
阅读 2 分钟
2.1k
如果只是单纯的计算二叉树的数量,其实这就完全转化成了一道规律题。我们可以从1开始寻找规律。1: 11,2: 12, 211,2,3:123,132,213,312,321

leetcode85. Maximal Rectangle

2017-08-01
阅读 4 分钟
1.8k
dp的一个思路就是通过存储换效率。也就是说,我将前序遍历过程中的一些有效值存储下来,以供后序遍历参考。从而省去了许多重复遍历,提高效率。这里我使用两个二维int数组来分别记录到matrix[i][j]为止的最大长度和最大高度。如果matrixi不是最左侧和最上侧的点,还需要判断其所能构成的最大矩形。

leetcode97. Interleaving String

2017-07-24
阅读 4 分钟
1.9k
乍一看这题可以通过递归的方式来求解。我们可以同时判断当前下标s1和s2的元素是不是和s3当前下标的元素相同。如果相同,就进入下一轮递归。代码如下:

leetcode62. Unique Paths

2017-06-22
阅读 3 分钟
4k
通过递归实现计算。根据题目可知,在任何一个方块,一共有两条路径,一条是往下走,一条是往右走,如果任何一条路径能够到达终点,则返回1,否则返回0。

leetcode42 Trapping Rain Water

2017-06-15
阅读 6 分钟
3.5k
假设这些是一些间隔的木板,问最多能够装多少水。也就是一个区域性的短板问题。其实一个区间能够乘的最大水量,取决于它的左右最近且最高的木板的长度。当然除了通过多个区间的和来计算总体的盛水量,还可以通过横向的划分来计算盛水量。这些将在接下来中的代码一一分析。官方也提供了一些答案,这里将给出相应的java实...