Skip to content

Commit 8de9140

Browse files
committed
一刷594
1 parent 9bff998 commit 8de9140

File tree

6 files changed

+98
-22
lines changed

6 files changed

+98
-22
lines changed

README.adoc

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4183,14 +4183,14 @@ TIP: **公众号的微信号是: `jikerizhi`**。__因为众所周知的原因
41834183
//|{doc_base_url}/0593-valid-square.adoc[题解]
41844184
//|Medium
41854185
//|
4186-
//
4187-
//|{counter:codes}
4188-
//|{leetcode_base_url}/longest-harmonious-subsequence/[594. Longest Harmonious Subsequence^]
4189-
//|{source_base_url}/_0594_LongestHarmoniousSubsequence.java[Java]
4190-
//|{doc_base_url}/0594-longest-harmonious-subsequence.adoc[题解]
4191-
//|Easy
4192-
//|
4193-
//
4186+
4187+
|{counter:codes}
4188+
|{leetcode_base_url}/longest-harmonious-subsequence/[594. Longest Harmonious Subsequence^]
4189+
|{source_base_url}/_0594_LongestHarmoniousSubsequence.java[Java]
4190+
|{doc_base_url}/0594-longest-harmonious-subsequence.adoc[题解]
4191+
|Easy
4192+
|
4193+
41944194
//|{counter:codes}
41954195
//|{leetcode_base_url}/big-countries/[595. Big Countries^]
41964196
//|{source_base_url}/_0595_BigCountries.java[Java]
Lines changed: 55 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,72 @@
11
[#0594-longest-harmonious-subsequence]
2-
= 594. Longest Harmonious Subsequence
2+
= 594. 最长和谐子序列
33

4-
{leetcode}/problems/longest-harmonious-subsequence/[LeetCode - Longest Harmonious Subsequence^]
4+
https://leetcode.cn/problems/longest-harmonious-subsequence/[LeetCode - 594. 最长和谐子序列 ^]
55

6-
We define a harmounious array as an array where the difference between its maximum value and its minimum value is *exactly* 1.
6+
和谐数组是指一个数组里元素的最大值和最小值之间的差别 *正好是 `1`*
77

8-
Now, given an integer array, you need to find the length of its longest harmonious subsequence among all its possible <a href="https://en.wikipedia.org/wiki/Subsequence">subsequences</a>.
8+
现在,给你一个整数数组 `nums`,请你在所有可能的子序列中找到最长的和谐子序列的长度。
99

10-
*Example 1:*
10+
数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。
1111

12-
[subs="verbatim,quotes,macros"]
13-
----
14-
*Input:* [1,3,2,2,5,2,3,7]
15-
*Output:* 5
16-
*Explanation:* The longest harmonious subsequence is [3,2,2,2,3].
17-
----
12+
*示例 1:*
13+
14+
....
15+
输入:nums = [1,3,2,2,5,2,3,7]
16+
输出:5
17+
解释:最长的和谐子序列是 [3,2,2,2,3]
18+
....
19+
20+
*示例 2:*
21+
22+
....
23+
输入:nums = [1,2,3,4]
24+
输出:2
25+
....
26+
27+
*示例 3:*
1828

19-
29+
....
30+
输入:nums = [1,1,1,1]
31+
输出:0
32+
....
2033

21-
*Note:* The length of the input array will not exceed 20,000.
34+
*提示:*
2235

36+
* `1 \<= nums.length \<= 2 * 10^4^`
37+
* `-10^9^ \<= nums[i] \<= 10^9^`
2338
2439
40+
== 思路分析
41+
42+
最简单的解法是排序+滑动窗口!
43+
44+
时间复杂度更优的解答是哈希计数。
45+
2546
[[src-0594]]
47+
[tabs]
48+
====
49+
一刷::
50+
+
51+
--
2652
[{java_src_attr}]
2753
----
2854
include::{sourcedir}/_0594_LongestHarmoniousSubsequence.java[tag=answer]
2955
----
56+
--
57+
58+
// 二刷::
59+
// +
60+
// --
61+
// [{java_src_attr}]
62+
// ----
63+
// include::{sourcedir}/_0594_LongestHarmoniousSubsequence_2.java[tag=answer]
64+
// ----
65+
// --
66+
====
67+
68+
69+
== 参考资料
3070

71+
. https://leetcode.cn/problems/longest-harmonious-subsequence/solutions/1111541/gong-shui-san-xie-yi-ti-shuang-jie-hua-d-quuh/[594. 最长和谐子序列 - 一题双解 :「滑动窗口」&「哈希计数」^]
72+
. https://leetcode.cn/problems/longest-harmonious-subsequence/solutions/1110137/zui-chang-he-xie-zi-xu-lie-by-leetcode-s-8cyr/[594. 最长和谐子序列 - 官方题解^]

docs/index.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1273,7 +1273,7 @@ include::0581-shortest-unsorted-continuous-subarray.adoc[leveloffset=+1]
12731273

12741274
// include::0593-valid-square.adoc[leveloffset=+1]
12751275

1276-
// include::0594-longest-harmonious-subsequence.adoc[leveloffset=+1]
1276+
include::0594-longest-harmonious-subsequence.adoc[leveloffset=+1]
12771277

12781278
// include::0595-big-countries.adoc[leveloffset=+1]
12791279

logbook/202503.adoc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1103,6 +1103,11 @@ endif::[]
11031103
|{doc_base_url}/0214-shortest-palindrome.adoc[题解]
11041104
|✅ 反转字符串,选择反转字符串结尾和原始字符串开头相同部分,再截取前缀+原始字符串即可获得答案!通过 124 / 126 个测试用例。使用 `reversed.substring(index)` 代替逐个字母比较,答案通过!
11051105

1106+
|{counter:codes2503}
1107+
|{leetcode_base_url}/longest-harmonious-subsequence/[594. 最长和谐子序列^]
1108+
|{doc_base_url}/0594-longest-harmonious-subsequence.adoc[题解]
1109+
|✅ 最简单的解法是排序。时间复杂度更优的解答是哈希计数。
1110+
11061111
|===
11071112

11081113
截止目前,本轮练习一共完成 {codes2503} 道题。

src/main/java/com/diguage/algo/leetcode/_0581_ShortestUnsortedContinuousSubarray.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ public class _0581_ShortestUnsortedContinuousSubarray {
1414
/**
1515
* Runtime: 4 ms, faster than 60.88% of Java online submissions for Shortest Unsorted Continuous Subarray.
1616
* Memory Usage: 51.8 MB, less than 7.69% of Java online submissions for Shortest Unsorted Continuous Subarray.
17+
*
18+
* @author D瓜哥 · https://www.diguage.com
19+
* @since 2020-01-30 21:44
1720
*/
1821
public int findUnsortedSubarray(int[] nums) {
1922
int min = Integer.MAX_VALUE;
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.diguage.algo.leetcode;
2+
3+
import java.util.HashMap;
4+
import java.util.Map;
5+
6+
public class _0594_LongestHarmoniousSubsequence {
7+
// tag::answer[]
8+
/**
9+
* @author D瓜哥 · https://www.diguage.com
10+
* @since 2020-01-30 21:44
11+
*/
12+
public int findLHS(int[] nums) {
13+
Map<Integer, Integer> map = new HashMap<>();
14+
for (int num : nums) {
15+
map.put(num, map.getOrDefault(num, 0) + 1);
16+
}
17+
int result = 0;
18+
for (int num : nums) {
19+
if (map.containsKey(num - 1)) {
20+
result = Math.max(result, map.get(num - 1) + map.get(num));
21+
}
22+
}
23+
return result;
24+
}
25+
// end::answer[]
26+
}

0 commit comments

Comments
 (0)