1
- # Leetcode常用函数
1
+ # Leetcode 常用函数
2
2
3
3
## 链表篇
4
4
7
7
### ListNode
8
8
9
9
``` java
10
- ListNode list= new ListNode (0 )
10
+ ListNode list= new ListNode (0 )
11
11
```
12
12
13
- 初始化一个值为0的空节点 ,提倡的写法
13
+ 初始化一个值为 0 的空节点 ,提倡的写法
14
14
15
15
### HashSet
16
16
17
- HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合但是允许有null值 ,HashSet 是无序的,即不会记录插入的顺序。HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。
17
+ HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合但是允许有 null 值 ,HashSet 是无序的,即不会记录插入的顺序。HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。
18
18
19
19
``` java
20
20
HashSet<String > sites = new HashSet<String > ();
21
21
```
22
22
23
23
#### add()
24
24
25
- 往HashSet里添加元素
25
+ 往 HashSet 里添加元素
26
26
27
27
```
28
28
sites.add("我是袁厨,大家快快关注我吧");
@@ -32,7 +32,7 @@ sites.add("我是袁厨,大家快快关注我吧");
32
32
33
33
#### remove()
34
34
35
- remover()size()也是会用到的函数,具体用法和ArrayList一样
35
+ remover()size()也是会用到的函数,具体用法和 ArrayList 一样
36
36
37
37
#### contains()
38
38
@@ -44,13 +44,11 @@ System.out.println(sites.contains("我是袁厨,大家快快关注我吧"));
44
44
45
45
> 输出:true;
46
46
47
-
48
-
49
47
## 数组篇
50
48
51
49
### length
52
50
53
- 该函数是用来得到数组长度的函数,这里需要注意的是length后面没有括号
51
+ 该函数是用来得到数组长度的函数,这里需要注意的是 length 后面没有括号
54
52
55
53
### sort()
56
54
@@ -85,7 +83,7 @@ return array;
85
83
86
84
### Arrays.copyOfRange()
87
85
88
- 将一个原始的数组,从下标0开始复制,复制到上标2 ,生成一个新的数组
86
+ 将一个原始的数组,从下标 0 开始复制,复制到上标 2 ,生成一个新的数组
89
87
90
88
```
91
89
int[] array = {1,2,3,4};
@@ -94,7 +92,7 @@ return ar;
94
92
95
93
```
96
94
97
- > array2: 1 , 2 ;
95
+ > array2: 1 , 2 ;
98
96
99
97
### System.arraycopy();
100
98
@@ -125,11 +123,11 @@ length:想要复制的长度
125
123
126
124
### 逻辑运算符
127
125
128
- #### x | 0
126
+ #### x | 0
129
127
130
128
得到的仍然是他本身,
131
129
132
- 例:1001|0000=1001;或运算代表的是如果两位其中有一个1则返回1,否则为0 ;
130
+ 例:1001|0000=1001;或运算代表的是如果两位其中有一个 1 则返回 1,否则为 0 ;
133
131
134
132
``` java
135
133
public static void main(String [] args) {
@@ -142,9 +140,9 @@ public static void main(String[] args) {
142
140
143
141
#### x & 0
144
142
145
- 无论任何数都会输出0 ,这个也很好理解。
143
+ 无论任何数都会输出 0 ,这个也很好理解。
146
144
147
- 例:1001&0000=0000;两位都为1才能返回1
145
+ 例:1001&0000=0000;两位都为 1 才能返回 1
148
146
149
147
```
150
148
public static void main(String[] args) {
@@ -157,9 +155,9 @@ public static void main(String[] args) {
157
155
158
156
#### x ^ 0
159
157
160
- 得到的还是他本身,这个也很好理解,异或的含义就是如果相同输出0,如果不同输出1
158
+ 得到的还是他本身,这个也很好理解,异或的含义就是如果相同输出 0,如果不同输出 1
161
159
162
- 例:0111^0000=0111第一位相同 ,其余位不同
160
+ 例:0111^0000=0111 第一位相同 ,其余位不同
163
161
164
162
``` java
165
163
public static void main(String [] args) {
@@ -172,7 +170,7 @@ public static void main(String[] args) {
172
170
173
171
#### x | 1
174
172
175
- 如果是奇数的话,还是它本身,偶数的话则加1 ;
173
+ 如果是奇数的话,还是它本身,偶数的话则加 1 ;
176
174
177
175
``` java
178
176
int x = - 9 ;
@@ -185,7 +183,7 @@ System.out.println(y|1);
185
183
186
184
#### x ^ 1
187
185
188
- 如果是偶数则加1,如果是奇数则减1 ;
186
+ 如果是偶数则加 1,如果是奇数则减 1 ;
189
187
190
188
``` java
191
189
int x = - 9 ;
@@ -198,7 +196,7 @@ System.out.println(y^1);
198
196
199
197
#### x & 1
200
198
201
- 得出最后一位是0还是1 ,通常会用来判断奇偶
199
+ 得出最后一位是 0 还是 1 ,通常会用来判断奇偶
202
200
203
201
``` java
204
202
int x = - 9 ;
@@ -211,7 +209,7 @@ System.out.println(y&1);
211
209
212
210
#### 1<<3
213
211
214
- 代表的含义是将1左移3位,即0001 ---->1000则为2^3为8
212
+ 代表的含义是将 1 左移 3 位,即 0001 ---->1000 则为 2^3 为 8
215
213
216
214
``` java
217
215
System . out. println(1 << 3 );
@@ -221,36 +219,34 @@ System.out.println(1<<3);
221
219
222
220
#### HashMap
223
221
224
- 创建一个HashMap ,两种数据类型
222
+ 创建一个 HashMap ,两种数据类型
225
223
226
224
```
227
225
HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
228
226
```
229
227
230
- 往hashmap里面插入数据
228
+ 往 hashmap 里面插入数据
231
229
232
230
``` java
233
231
for (int num : arr){
234
232
map. put(num, map. getOrDefault(num, 0 ) + 1 );// 如果没有则添加,如果有则加1
235
- }
233
+ }
236
234
```
237
235
238
- 遍历Hashmap,查询值为k的元素
236
+ 遍历 Hashmap,查询值为 k 的元素
239
237
240
238
```
241
239
for (int k : hashmap.keySet())
242
240
if (hashmap.get(k) == 1) return k;
243
-
241
+
244
242
```
245
243
246
- 遍历 HashSet
244
+ 遍历 HashSet
247
245
248
246
```
249
247
set.iterator().next();//迭代器
250
248
```
251
249
252
-
253
-
254
250
## 树篇
255
251
256
252
### ArrayList<List<对象类型>>
@@ -274,14 +270,14 @@ ArrayList 类是一个可以动态修改的数组,与普通数组的区别就
274
270
``` java
275
271
public class Test {
276
272
public static void main (String [] args ) {
277
- List<String > array = new ArrayList<> ();
273
+ List<String > array = new ArrayList<> ();
278
274
array. add(" 大家好我是袁厨" );
279
275
System . out. println(array);
280
276
}
281
277
}
282
278
```
283
279
284
- > 输出:大家好我是袁厨
280
+ > 输出:大家好我是袁厨
285
281
286
282
#### get()
287
283
@@ -290,15 +286,15 @@ get()函数用于获取动态数组的元素,括号内为索引值
290
286
``` java
291
287
public class Test {
292
288
public static void main (String [] args ) {
293
- List<String > array = new ArrayList<> ();
289
+ List<String > array = new ArrayList<> ();
294
290
array. add(" 大家好我是袁厨" );
295
291
System . out. println(array. get(0 ));// 获取第一个元素
296
292
}
297
293
}
298
294
299
295
```
300
296
301
- > 输出:大家好我是袁厨
297
+ > 输出:大家好我是袁厨
302
298
303
299
#### set()
304
300
@@ -307,7 +303,7 @@ set()用于修改元素,括号内为索引值
307
303
```
308
304
public class Test {
309
305
public static void main(String[] args) {
310
- List<String> array = new ArrayList<>();
306
+ List<String> array = new ArrayList<>();
311
307
array.add("大家好我是袁厨");
312
308
array.set(0,"祝大家天天开心")
313
309
System.out.println(array.get(0));//获取第一个元素
@@ -324,7 +320,7 @@ public class Test {
324
320
```
325
321
public class Test {
326
322
public static void main(String[] args) {
327
- List<String> array = new ArrayList<>();
323
+ List<String> array = new ArrayList<>();
328
324
array.add("大家好我是袁厨");
329
325
array.add("祝大家天天开心");
330
326
array.remove(0);
@@ -337,7 +333,7 @@ public class Test {
337
333
338
334
#### isEmpty()
339
335
340
- isEmpty()函数判断是否为空,这个函数用到的地方很多,队列和栈的时候总会用。总是会在while循环中使用
336
+ isEmpty()函数判断是否为空,这个函数用到的地方很多,队列和栈的时候总会用。总是会在 while 循环中使用
341
337
342
338
while(!queue.isEmpty()){
343
339
@@ -348,7 +344,7 @@ while(!queue.isEmpty()){
348
344
```
349
345
public class Test {
350
346
public static void main(String[] args) {
351
- List<String> array = new ArrayList<>();
347
+ List<String> array = new ArrayList<>();
352
348
array.add("大家好我是袁厨");
353
349
array.add("祝大家天天开心");
354
350
array.remove(0);
@@ -411,14 +407,14 @@ public class Test{
411
407
sBuffer.append("是");
412
408
sBuffer.append("袁厨");
413
409
sBuffer.append("大家点个关注吧");
414
- System.out.println(sBuffer);
410
+ System.out.println(sBuffer);
415
411
}
416
412
}
417
413
```
418
414
419
415
> 输出:我的名字是袁厨大家点个关注吧
420
416
421
- String中的字符串是不允许修改的,这个StringBuffer可以进行修改 ,做字符串的题目时会经常用到,树的题目中也偶尔会遇到
417
+ String 中的字符串是不允许修改的,这个 StringBuffer 可以进行修改 ,做字符串的题目时会经常用到,树的题目中也偶尔会遇到
422
418
423
419
### charAt(i)
424
420
@@ -438,9 +434,9 @@ public class Test {
438
434
439
435
这个函数的用法,就跟我们根据数组的索引输出值一样。在字符串题目中也比较常用。
440
436
441
- ### s.charAt(index)-'0'
437
+ ### s.charAt(index)-'0'
442
438
443
- 这个函数的用途是将字符串索引值变成int型 。知道这个可以大大提高刷题效率。大家可以掌握一下。
439
+ 这个函数的用途是将字符串索引值变成 int 型 。知道这个可以大大提高刷题效率。大家可以掌握一下。
444
440
445
441
``` java
446
442
public class Test {
@@ -457,16 +453,16 @@ public class Test {
457
453
458
454
> 输出:java.lang.Integer
459
455
460
- ### Integer.toString()
456
+ ### Integer.toString()
461
457
462
- 该函数用于将int型变为string型 ,比如这个** 第9题求回文数 ** 的题目,我们就是先将x变为字符串 ,然后再遍历字符串
458
+ 该函数用于将 int 型变为 string 型 ,比如这个** 第 9 题求回文数 ** 的题目,我们就是先将 x 变为字符串 ,然后再遍历字符串
463
459
464
460
``` java
465
461
class Solution {
466
462
public boolean isPalindrome (int x ) {
467
463
if (x< 0 ){
468
464
return false ;
469
- }
465
+ }
470
466
// 将int型变成string型,然后遍历字符串,不再需要使用额外数组进行存储
471
467
String t = Integer . toString(x);
472
468
int i = 0 ;
@@ -495,12 +491,12 @@ public String substring(int beginIndex);
495
491
public String substring(int beginIndex, int endIndex);
496
492
```
497
493
498
- 表示两种情况,一种是从beginIndex到结尾,一种是从beginIndex ->endIndex;
494
+ 表示两种情况,一种是从 beginIndex 到结尾,一种是从 beginIndex ->endIndex;
499
495
500
496
```
501
497
String Str = new String("程序员爱做饭");
502
498
System.out.println(Str.substring(3) );
503
- System.out.println(Str.substring(4, 5) );
499
+ System.out.println(Str.substring(4, 5) );
504
500
```
505
501
506
502
> 输出:爱做饭,做
@@ -515,8 +511,8 @@ public static void main(String args[]){
515
511
Integer y = 10;
516
512
Integer z =5;
517
513
Short a = 5;
518
- System.out.println(x.equals(y));
519
- System.out.println(x.equals(z));
514
+ System.out.println(x.equals(y));
515
+ System.out.println(x.equals(z));
520
516
System.out.println(x.equals(a));
521
517
}
522
518
```
@@ -533,14 +529,12 @@ System.out.println(s);
533
529
534
530
> 输出:12345
535
531
536
- ### char数组变为String
532
+ ### char 数组变为 String
537
533
538
534
``` java
539
535
String newstr = new String (arr2,start,end);
540
536
```
541
537
542
-
543
-
544
538
### indexOf
545
539
546
540
- ** int indexOf(String str):** 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
@@ -561,7 +555,7 @@ return s.indexOf("LLL");
561
555
Stack<TreeNode> stack = new Stack<TreeNode>();//创建栈
562
556
```
563
557
564
- 上面的是创建新栈,栈的变量类型为TreeNode ,我们用深度优先遍历树来举例
558
+ 上面的是创建新栈,栈的变量类型为 TreeNode ,我们用深度优先遍历树来举例
565
559
566
560
#### push()
567
561
@@ -576,7 +570,7 @@ Stack<TreeNode> stack = new Stack<TreeNode>();//创建栈
576
570
移除堆栈顶部的对象,并作为此函数的值返回该对象。
577
571
578
572
``` java
579
- TreeNode temp = stack. pop();// 将栈顶元素出栈,赋值TreeNode变量temp
573
+ TreeNode temp = stack. pop();// 将栈顶元素出栈,赋值TreeNode变量temp
580
574
```
581
575
582
576
peek()
@@ -600,4 +594,3 @@ while(!stack.isEmpty()){
600
594
//反转并变为字符串
601
595
return str.reverse().toString();
602
596
```
603
-
0 commit comments