File tree Expand file tree Collapse file tree 4 files changed +69
-21
lines changed Expand file tree Collapse file tree 4 files changed +69
-21
lines changed Original file line number Diff line number Diff 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 >
Original file line number Diff line number Diff line change @@ -166,20 +166,19 @@ JavaScript:
166166 * @return  {number[]}  
167167 */  
168168var  nextGreaterElements  =  function  (nums ) {
169-   //  let map = new Map() ;
169+   const   len   =   nums . length ;
170170  let  stack =  [];
171-   let  res =  new   Array (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``` 
Original file line number Diff line number Diff line change @@ -301,32 +301,46 @@ func dailyTemperatures(num []int) []int {
301301
302302JavaScript:
303303``` javascript 
304- /** 
305-  * @param  {number[]}  temperatures  
306-  * @return  {number[]}  
307-  */  
304+ //  版本一
308305var  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
Original file line number Diff line number Diff line change @@ -250,11 +250,9 @@ func removeDuplicates(s string) string {
250250
251251javaScript: 
252252
253+ 法一:使用栈
254+ 
253255``` js 
254- /** 
255-  * @param  {string}  s  
256-  * @return  {string}  
257-  */  
258256var  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+ 
270287TypeScript:
271288
272289``` typescript 
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments