Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ae77a96

Browse files
authored
Merge branch 'youngyangyang04:master' into master
2 parents 2ffce05 + 41cf322 commit ae77a96

File tree

3 files changed

+59
-15
lines changed

3 files changed

+59
-15
lines changed

‎problems/0200.岛屿数量.md‎

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,3 +247,35 @@ public:
247247

248248

249249
## 其他语言版本
250+
251+
### Java
252+
253+
下面的代码使用的是深度优先搜索 DFS 的做法。为了统计岛屿数量同时不重复记录,每当我们搜索到一个岛后,就将这个岛 "淹没" —— 将这个岛所占的地方从 "1" 改为 "0",这样就不用担心后续会重复记录这个岛屿了。而 DFS 的过程就体现在 "淹没" 这一步中。详见代码:
254+
255+
```java
256+
public int numIslands(char[][] grid) {
257+
int res = 0; //记录找到的岛屿数量
258+
for(int i = 0;i < grid.length;i++){
259+
for(int j = 0;j < grid[0].length;j++){
260+
//找到"1",res加一,同时淹没这个岛
261+
if(grid[i][j] == '1'){
262+
res++;
263+
dfs(grid,i,j);
264+
}
265+
}
266+
}
267+
return res;
268+
}
269+
//使用DFS"淹没"岛屿
270+
public void dfs(char[][] grid, int i, int j){
271+
//搜索边界:索引越界或遍历到了"0"
272+
if(i < 0 || i >= grid.length || j < 0 || j >= grid[0].length || grid[i][j] == '0') return;
273+
//将这块土地标记为"0"
274+
grid[i][j] = '0';
275+
//根据"每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成",对上下左右的相邻顶点进行dfs
276+
dfs(grid,i - 1,j);
277+
dfs(grid,i + 1,j);
278+
dfs(grid,i,j + 1);
279+
dfs(grid,i,j - 1);
280+
}
281+
```

‎problems/0242.有效的字母异位词.md‎

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,18 +92,24 @@ public:
9292
9393
Java:
9494
```java
95+
/**
96+
* 242. 有效的字母异位词 字典解法
97+
* 时间复杂度O(m+n) 空间复杂度O(1)
98+
*/
9599
class Solution {
96100
public boolean isAnagram(String s, String t) {
97-
98101
int[] record = new int[26];
99-
for (char c : s.toCharArray()) {
100-
record[c - 'a'] += 1;
102+
103+
for (int i = 0; i < s.length(); i++) {
104+
record[s.charAt(i) - 'a']++;
101105
}
102-
for (char c : t.toCharArray()) {
103-
record[c - 'a'] -= 1;
106+
107+
for (int i = 0; i < t.length(); i++) {
108+
record[t.charAt(i) - 'a']--;
104109
}
105-
for (int i : record) {
106-
if (i != 0) {
110+
111+
for (int count: record) {
112+
if (count != 0) {
107113
return false;
108114
}
109115
}

‎problems/0977.有序数组的平方.md‎

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -239,18 +239,24 @@ Typescript:
239239

240240
```typescript
241241
function sortedSquares(nums: number[]): number[] {
242-
let left: number = 0, right: number = nums.length - 1;
243-
let resArr: number[] = new Array(nums.length);
244-
let resArrIndex: number = resArr.length - 1;
242+
const ans: number[] = [];
243+
let left = 0,
244+
right = nums.length - 1;
245+
245246
while (left <= right) {
246-
if (Math.abs(nums[left]) < Math.abs(nums[right])) {
247-
resArr[resArrIndex] = nums[right--] ** 2;
247+
// 右侧的元素不需要取绝对值,nums 为非递减排序的整数数组
248+
// 在同为负数的情况下,左侧的平方值一定大于右侧的平方值
249+
if (Math.abs(nums[left]) > nums[right]) {
250+
// 使用 Array.prototype.unshift() 直接在数组的首项插入当前最大值
251+
ans.unshift(nums[left] ** 2);
252+
left++;
248253
} else {
249-
resArr[resArrIndex] = nums[left++] ** 2;
254+
ans.unshift(nums[right] ** 2);
255+
right--;
250256
}
251-
resArrIndex--;
252257
}
253-
return resArr;
258+
259+
return ans;
254260
};
255261
```
256262

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /