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 3018a83

Browse files
Merge branch 'youngyangyang04:master' into master
2 parents 2c0bc94 + 28a8d2e commit 3018a83

File tree

4 files changed

+69
-21
lines changed

4 files changed

+69
-21
lines changed

‎problems/0406.根据身高重建队列.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,24 @@ var reconstructQueue = function(people) {
290290
};
291291
```
292292

293+
### TypeScript
294+
295+
```typescript
296+
function reconstructQueue(people: number[][]): number[][] {
297+
people.sort((a, b) => {
298+
if (a[0] === b[0]) return a[1] - b[1];
299+
return b[0] - a[0];
300+
});
301+
const resArr: number[][] = [];
302+
for (let i = 0, length = people.length; i < length; i++) {
303+
resArr.splice(people[i][1], 0, people[i]);
304+
}
305+
return resArr;
306+
};
307+
```
308+
309+
310+
293311

294312
-----------------------
295313
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>

‎problems/0503.下一个更大元素II.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -166,20 +166,19 @@ JavaScript:
166166
* @return {number[]}
167167
*/
168168
var nextGreaterElements = function (nums) {
169-
// let map = new Map();
169+
constlen=nums.length;
170170
let stack = [];
171-
let res = newArray(nums.length).fill(-1);
172-
for (let i = 0; i < nums.length * 2; i++) {
171+
let res = Array(len).fill(-1);
172+
for (let i = 0; i < len * 2; i++) {
173173
while (
174174
stack.length &&
175-
nums[i % nums.length] > nums[stack[stack.length - 1]]
175+
nums[i % len] > nums[stack[stack.length - 1]]
176176
) {
177-
let index = stack.pop();
178-
res[index] = nums[i % nums.length];
177+
const index = stack.pop();
178+
res[index] = nums[i % len];
179179
}
180-
stack.push(i % nums.length);
180+
stack.push(i % len);
181181
}
182-
183182
return res;
184183
};
185184
```

‎problems/0739.每日温度.md

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -301,32 +301,46 @@ func dailyTemperatures(num []int) []int {
301301

302302
JavaScript:
303303
```javascript
304-
/**
305-
* @param {number[]} temperatures
306-
* @return {number[]}
307-
*/
304+
// 版本一
308305
var dailyTemperatures = function(temperatures) {
309-
let n = temperatures.length;
310-
let res =new Array(n).fill(0);
311-
let stack = []; // 递减栈:用于存储元素右面第一个比他大的元素下标
306+
const n = temperatures.length;
307+
const res = Array(n).fill(0);
308+
const stack = []; // 递增栈:用于存储元素右面第一个比他大的元素下标
312309
stack.push(0);
313310
for (let i = 1; i < n; i++) {
314311
// 栈顶元素
315-
let top = stack[stack.length - 1];
312+
const top = stack[stack.length - 1];
316313
if (temperatures[i] < temperatures[top]) {
317314
stack.push(i);
318315
} else if (temperatures[i] === temperatures[top]) {
319316
stack.push(i);
320317
} else {
321318
while (stack.length && temperatures[i] > temperatures[stack[stack.length - 1]]) {
322-
let top = stack.pop();
319+
const top = stack.pop();
323320
res[top] = i - top;
324321
}
325322
stack.push(i);
326323
}
327324
}
328325
return res;
329326
};
327+
328+
329+
// 版本二
330+
var dailyTemperatures = function(temperatures) {
331+
const n = temperatures.length;
332+
const res = Array(n).fill(0);
333+
const stack = []; // 递增栈:用于存储元素右面第一个比他大的元素下标
334+
stack.push(0);
335+
for (let i = 1; i < n; i++) {
336+
while (stack.length && temperatures[i] > temperatures[stack[stack.length - 1]]) {
337+
const top = stack.pop();
338+
res[top] = i - top;
339+
}
340+
stack.push(i);
341+
}
342+
return res;
343+
};
330344
```
331345

332346

‎problems/1047.删除字符串中的所有相邻重复项.md

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -250,11 +250,9 @@ func removeDuplicates(s string) string {
250250

251251
javaScript:
252252

253+
法一:使用栈
254+
253255
```js
254-
/**
255-
* @param {string} s
256-
* @return {string}
257-
*/
258256
var removeDuplicates = function(s) {
259257
const stack = [];
260258
for(const x of s) {
@@ -267,6 +265,25 @@ var removeDuplicates = function(s) {
267265
};
268266
```
269267

268+
法二:双指针(模拟栈)
269+
270+
```js
271+
// 原地解法(双指针模拟栈)
272+
var removeDuplicates = function(s) {
273+
s = [...s];
274+
let top = -1; // 指向栈顶元素的下标
275+
for(let i = 0; i < s.length; i++) {
276+
if(top === -1 || s[top] !== s[i]) { // top === -1 即空栈
277+
s[++top] = s[i]; // 入栈
278+
} else {
279+
top--; // 推出栈
280+
}
281+
}
282+
s.length = top + 1; // 栈顶元素下标 + 1 为栈的长度
283+
return s.join('');
284+
};
285+
```
286+
270287
TypeScript:
271288

272289
```typescript

0 commit comments

Comments
(0)

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