-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathatom.xml
656 lines (407 loc) · 188 KB
/
atom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Jungle</title>
<subtitle>Try My Best</subtitle>
<link href="/atom.xml" rel="self"/>
<link href="http://yoursite.com/"/>
<updated>2020-06-24T13:26:13.486Z</updated>
<id>http://yoursite.com/</id>
<author>
<name>Jungle</name>
</author>
<generator uri="https://hexo.io/">Hexo</generator>
<entry>
<title>June Leetcoding Challenge(6.24)</title>
<link href="http://yoursite.com/2020/06/24/LeetCodeJuneChallenge24th/"/>
<id>http://yoursite.com/2020/06/24/LeetCodeJuneChallenge24th/</id>
<published>2020-06-24T12:35:00.000Z</published>
<updated>2020-06-24T13:26:13.486Z</updated>
<content type="html"><![CDATA[<h1 id="LeetCode六月挑战(6-24-)Unique-Binary-Search-Trees-LeetCode-96解题方案"><a href="#LeetCode六月挑战(6-24-)Unique-Binary-Search-Trees-LeetCode-96解题方案" class="headerlink" title="LeetCode六月挑战(6.24 )Unique Binary Search Trees LeetCode 96解题方案"></a>LeetCode六月挑战(6.24 )Unique Binary Search Trees LeetCode 96解题方案</h1><h1 id="题目描述"><a href="#题目描述" class="headerlink" title="题目描述"></a>题目描述</h1><p>Given n, how many structurally unique BST’s (binary search trees) that store values 1 … n?</p><p>Example:</p><p>Input: 3<br>Output: 5<br>Explanation:<br>Given n = 3, there are a total of 5 unique BST’s:</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">1 3 3 2 1</span><br><span class="line"> \ / / / \ \</span><br><span class="line"> 3 2 1 1 3 2</span><br><span class="line"> / / \ \</span><br><span class="line">2 1 2 3</span><br></pre></td></tr></table></figure> <a id="more"></a><h1 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h1><p><img src="https://img-blog.csdnimg.cn/2020062421183077.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMzAxOTc0,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述"></p><h1 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h1><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">numTrees</span><span class="params">(<span class="keyword">int</span> n)</span> </span>{</span><br><span class="line"> <span class="keyword">if</span>(n<<span class="number">1</span>)</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line"> <span class="keyword">int</span>[][] dp=<span class="keyword">new</span> <span class="keyword">int</span>[n+<span class="number">1</span>][n+<span class="number">1</span>];</span><br><span class="line"> <span class="keyword">return</span> f(<span class="number">1</span>,n,dp);</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">f</span><span class="params">(<span class="keyword">int</span> i,<span class="keyword">int</span> j,<span class="keyword">int</span>[][] dp)</span></span>{</span><br><span class="line"> <span class="keyword">if</span>(i==j || i>j) <span class="keyword">return</span> <span class="number">1</span>;</span><br><span class="line"> <span class="keyword">if</span>(dp[i][j]!=<span class="number">0</span>) <span class="keyword">return</span> dp[i][j];</span><br><span class="line"> <span class="keyword">int</span> sum=<span class="number">0</span>;</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> x=i;x<=j;x++){</span><br><span class="line"> sum+=f(i,x-<span class="number">1</span>,dp)*f(x+<span class="number">1</span>,j,dp);</span><br><span class="line"> }</span><br><span class="line"> dp[i][j]=sum;</span><br><span class="line"> <span class="keyword">return</span> dp[i][j];</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<h1 id="LeetCode六月挑战(6-24-)Unique-Binary-Search-Trees-LeetCode-96解题方案"><a href="#LeetCode六月挑战(6-24-)Unique-Binary-Search-Trees-LeetCode-96解题方案" class="headerlink" title="LeetCode六月挑战(6.24 )Unique Binary Search Trees LeetCode 96解题方案"></a>LeetCode六月挑战(6.24 )Unique Binary Search Trees LeetCode 96解题方案</h1><h1 id="题目描述"><a href="#题目描述" class="headerlink" title="题目描述"></a>题目描述</h1><p>Given n, how many structurally unique BST’s (binary search trees) that store values 1 … n?</p>
<p>Example:</p>
<p>Input: 3<br>Output: 5<br>Explanation:<br>Given n = 3, there are a total of 5 unique BST’s:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">1 3 3 2 1</span><br><span class="line"> \ &#x2F; &#x2F; &#x2F; \ \</span><br><span class="line"> 3 2 1 1 3 2</span><br><span class="line"> &#x2F; &#x2F; \ \</span><br><span class="line">2 1 2 3</span><br></pre></td></tr></table></figure>
</summary>
<category term="LeetCode" scheme="http://yoursite.com/categories/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/categories/LeetCode/June-Leetcoding-Challenge/"/>
<category term="LeetCode" scheme="http://yoursite.com/tags/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/tags/June-Leetcoding-Challenge/"/>
</entry>
<entry>
<title>June Leetcoding Challenge(6.23)</title>
<link href="http://yoursite.com/2020/06/23/LeetCodeJuneChallenge23th/"/>
<id>http://yoursite.com/2020/06/23/LeetCodeJuneChallenge23th/</id>
<published>2020-06-23T12:35:00.000Z</published>
<updated>2020-06-24T13:29:06.036Z</updated>
<content type="html"><![CDATA[<h1 id="LeetCode六月挑战(6-23-)Count-Complete-Tree-Nodes-LeetCode-222-解题方案Given-a-complete-binary-tree-count-the-number-of-nodes"><a href="#LeetCode六月挑战(6-23-)Count-Complete-Tree-Nodes-LeetCode-222-解题方案Given-a-complete-binary-tree-count-the-number-of-nodes" class="headerlink" title="LeetCode六月挑战(6.23 )Count Complete Tree Nodes LeetCode 222 解题方案Given a complete binary tree, count the number of nodes."></a>LeetCode六月挑战(6.23 )Count Complete Tree Nodes LeetCode 222 解题方案Given a complete binary tree, count the number of nodes.</h1><p>Note:</p><p>Definition of a complete binary tree from Wikipedia:<br>In a complete binary tree every level, except possibly the last, is completely filled, and all nodes in the last level are as far left as possible. It can have between 1 and 2h nodes inclusive at the last level h.</p><p>Example:</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">Input: </span><br><span class="line"> 1</span><br><span class="line"> / \</span><br><span class="line"> 2 3</span><br><span class="line"> / \ /</span><br><span class="line">4 5 6</span><br><span class="line"></span><br><span class="line">Output: 6</span><br></pre></td></tr></table></figure><a id="more"></a><h1 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h1><p><img src="https://img-blog.csdnimg.cn/20200623212416237.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMzAxOTc0,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"></p><h1 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h1><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for a binary tree node.</span></span><br><span class="line"><span class="comment"> * public class TreeNode {</span></span><br><span class="line"><span class="comment"> * int val;</span></span><br><span class="line"><span class="comment"> * TreeNode left;</span></span><br><span class="line"><span class="comment"> * TreeNode right;</span></span><br><span class="line"><span class="comment"> * TreeNode() {}</span></span><br><span class="line"><span class="comment"> * TreeNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> * TreeNode(int val, TreeNode left, TreeNode right) {</span></span><br><span class="line"><span class="comment"> * this.val = val;</span></span><br><span class="line"><span class="comment"> * this.left = left;</span></span><br><span class="line"><span class="comment"> * this.right = right;</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">countNodes</span><span class="params">(TreeNode root)</span> </span>{</span><br><span class="line"> <span class="keyword">int</span> left = leftNode(root);</span><br><span class="line"> <span class="keyword">int</span> right = rightNode(root);</span><br><span class="line"> <span class="keyword">return</span> left == right ? (<span class="number">1</span><<left) -<span class="number">1</span> : <span class="number">1</span> + countNodes(root.left)+countNodes(root.right);</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">leftNode</span><span class="params">(TreeNode root)</span></span>{</span><br><span class="line"> <span class="keyword">return</span> root == <span class="keyword">null</span>? <span class="number">0</span>:<span class="number">1</span>+leftNode(root.left);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">rightNode</span><span class="params">(TreeNode root)</span></span>{</span><br><span class="line"> <span class="keyword">return</span> root == <span class="keyword">null</span>? <span class="number">0</span>:<span class="number">1</span>+rightNode(root.right);</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<h1 id="LeetCode六月挑战(6-23-)Count-Complete-Tree-Nodes-LeetCode-222-解题方案Given-a-complete-binary-tree-count-the-number-of-nodes"><a href="#LeetCode六月挑战(6-23-)Count-Complete-Tree-Nodes-LeetCode-222-解题方案Given-a-complete-binary-tree-count-the-number-of-nodes" class="headerlink" title="LeetCode六月挑战(6.23 )Count Complete Tree Nodes LeetCode 222 解题方案Given a complete binary tree, count the number of nodes."></a>LeetCode六月挑战(6.23 )Count Complete Tree Nodes LeetCode 222 解题方案Given a complete binary tree, count the number of nodes.</h1><p>Note:</p>
<p>Definition of a complete binary tree from Wikipedia:<br>In a complete binary tree every level, except possibly the last, is completely filled, and all nodes in the last level are as far left as possible. It can have between 1 and 2h nodes inclusive at the last level h.</p>
<p>Example:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">Input: </span><br><span class="line"> 1</span><br><span class="line"> &#x2F; \</span><br><span class="line"> 2 3</span><br><span class="line"> &#x2F; \ &#x2F;</span><br><span class="line">4 5 6</span><br><span class="line"></span><br><span class="line">Output: 6</span><br></pre></td></tr></table></figure>
</summary>
<category term="LeetCode" scheme="http://yoursite.com/categories/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/categories/LeetCode/June-Leetcoding-Challenge/"/>
<category term="LeetCode" scheme="http://yoursite.com/tags/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/tags/June-Leetcoding-Challenge/"/>
</entry>
<entry>
<title>June Leetcoding Challenge(6.22)</title>
<link href="http://yoursite.com/2020/06/22/LeetCodeJuneChallenge22th/"/>
<id>http://yoursite.com/2020/06/22/LeetCodeJuneChallenge22th/</id>
<published>2020-06-22T12:35:00.000Z</published>
<updated>2020-06-22T17:57:23.005Z</updated>
<content type="html"><![CDATA[<h1 id="LeetCode六月挑战(6-22-)Single-Number-II-LeetCode-137解题方案"><a href="#LeetCode六月挑战(6-22-)Single-Number-II-LeetCode-137解题方案" class="headerlink" title="LeetCode六月挑战(6.22 )Single Number II LeetCode 137解题方案"></a>LeetCode六月挑战(6.22 )Single Number II LeetCode 137解题方案</h1><p>Given a non-empty array of integers, every element appears three times except for one, which appears exactly once. Find that single one.</p><p>Note:</p><p>Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">Example 1:</span><br><span class="line"></span><br><span class="line">Input: [2,2,3,2]</span><br><span class="line">Output: 3</span><br><span class="line">Example 2:</span><br><span class="line"></span><br><span class="line">Input: [0,1,0,1,0,1,99]</span><br><span class="line">Output: 99</span><br></pre></td></tr></table></figure><a id="more"></a><h1 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h1><p>将 数组中的数据放入Set中,然后让Set中的元素都出现三次,然后减去nums中元素的总和,这样,最后的结果为两倍数组中只出现一次的元素,最后返回1/2的结果即可。</p><h1 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h1><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">singleNumber</span><span class="params">(self, nums: List[int])</span> -> int:</span></span><br><span class="line"> <span class="keyword">return</span> (<span class="number">3</span>*sum(set(nums))-sum(nums))//<span class="number">2</span></span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<h1 id="LeetCode六月挑战(6-22-)Single-Number-II-LeetCode-137解题方案"><a href="#LeetCode六月挑战(6-22-)Single-Number-II-LeetCode-137解题方案" class="headerlink" title="LeetCode六月挑战(6.22 )Single Number II LeetCode 137解题方案"></a>LeetCode六月挑战(6.22 )Single Number II LeetCode 137解题方案</h1><p>Given a non-empty array of integers, every element appears three times except for one, which appears exactly once. Find that single one.</p>
<p>Note:</p>
<p>Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">Example 1:</span><br><span class="line"></span><br><span class="line">Input: [2,2,3,2]</span><br><span class="line">Output: 3</span><br><span class="line">Example 2:</span><br><span class="line"></span><br><span class="line">Input: [0,1,0,1,0,1,99]</span><br><span class="line">Output: 99</span><br></pre></td></tr></table></figure>
</summary>
<category term="LeetCode" scheme="http://yoursite.com/categories/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/categories/LeetCode/June-Leetcoding-Challenge/"/>
<category term="LeetCode" scheme="http://yoursite.com/tags/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/tags/June-Leetcoding-Challenge/"/>
</entry>
<entry>
<title>June Leetcoding Challenge(6.21)</title>
<link href="http://yoursite.com/2020/06/21/LeetCodeJuneChallenge21th/"/>
<id>http://yoursite.com/2020/06/21/LeetCodeJuneChallenge21th/</id>
<published>2020-06-21T12:35:00.000Z</published>
<updated>2020-06-22T18:00:10.647Z</updated>
<content type="html"><![CDATA[<h1 id="LeetCode六月挑战(6-21-)Dungeon-Game-LeetCode-174解题方案"><a href="#LeetCode六月挑战(6-21-)Dungeon-Game-LeetCode-174解题方案" class="headerlink" title="LeetCode六月挑战(6.21 )Dungeon Game LeetCode 174解题方案"></a>LeetCode六月挑战(6.21 )Dungeon Game LeetCode 174解题方案</h1><p>The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dungeon. The dungeon consists of M x N rooms laid out in a 2D grid. Our valiant knight (K) was initially positioned in the top-left room and must fight his way through the dungeon to rescue the princess.</p><p>The knight has an initial health point represented by a positive integer. If at any point his health point drops to 0 or below, he dies immediately.</p><p>Some of the rooms are guarded by demons, so the knight loses health (negative integers) upon entering these rooms; other rooms are either empty (0’s) or contain magic orbs that increase the knight’s health (positive integers).</p><p>In order to reach the princess as quickly as possible, the knight decides to move only rightward or downward in each step.</p><p>Write a function to determine the knight’s minimum initial health so that he is able to rescue the princess.</p><p>For example, given the dungeon below, the initial health of the knight must be at least 7 if he follows the optimal path RIGHT-> RIGHT -> DOWN -> DOWN.</p><p><img src="https://img-blog.csdnimg.cn/20200621212041700.png" alt><br>Note:</p><p>The knight’s health has no upper bound.<br>Any room can contain threats or power-ups, even the first room the knight enters and the bottom-right room where the princess is imprisoned.</p><a id="more"></a><h1 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h1><p>该题使用动态规划解法。设骑士的初始血量为dp[0][0]=x,我们的目的就是求x,根据题意,骑士只可以往右走或者往下走,因此存在dp[i+1][j]和dp[i][j+1],如果是dungeon为负数,则dp[i+1][j]或dp[i][j+1]的值应为当前血量+下一步扣除的血量即dp[i+1][j] = dp[i][j] -dungeon[i+1][j]或dp[i][j+1] = dp[i][j] -dungeon[i][j+1],直到判断到最后公主在的位置血量大于0即可。我们可以从公主所在位置往回推理求x,即将dp[i][j]设置在</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">dp[i][j] = max(1, min(dp[i + 1][j], dp[i][j + 1]) - dungeon[i][j]);</span><br></pre></td></tr></table></figure><p>同时我们也需要考虑数组边界问题。</p><h1 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h1><h2 id="java"><a href="#java" class="headerlink" title="java"></a>java</h2><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">calculateMinimumHP</span><span class="params">(<span class="keyword">int</span>[][] dungeon)</span> </span>{</span><br><span class="line"> <span class="keyword">int</span> i = dungeon.length-<span class="number">1</span>;</span><br><span class="line"> <span class="keyword">int</span> j = dungeon[<span class="number">0</span>].length-<span class="number">1</span>;</span><br><span class="line"> <span class="keyword">int</span>[][] dp = <span class="keyword">new</span> <span class="keyword">int</span>[i+<span class="number">1</span>][j+<span class="number">1</span>];</span><br><span class="line"> dp[i][j] = dungeon[i][j] > <span class="number">0</span>? <span class="number">1</span>: Math.abs(dungeon[i][j]) + <span class="number">1</span>;</span><br><span class="line"> <span class="keyword">for</span>(i=dungeon.length-<span class="number">1</span>;i>=<span class="number">0</span>;i--){</span><br><span class="line"> <span class="keyword">for</span>(j=dungeon[<span class="number">0</span>].length-<span class="number">1</span>;j>=<span class="number">0</span>;j--){</span><br><span class="line"> <span class="keyword">if</span> (i == dungeon.length - <span class="number">1</span> && j == dungeon[<span class="number">0</span>].length - <span class="number">1</span>) {</span><br><span class="line"> <span class="keyword">continue</span>;</span><br><span class="line"> }</span><br><span class="line"> dp[i][j] = Math.max(<span class="number">1</span>, Math.min(i + <span class="number">1</span> >= dungeon.length ? Integer.MAX_VALUE : dp[i + <span class="number">1</span>][j],</span><br><span class="line"> j + <span class="number">1</span> >= dungeon[<span class="number">0</span>].length ? Integer.MAX_VALUE : dp[i][j + <span class="number">1</span>]) - dungeon[i][j]);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> dp[<span class="number">0</span>][<span class="number">0</span>];</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<h1 id="LeetCode六月挑战(6-21-)Dungeon-Game-LeetCode-174解题方案"><a href="#LeetCode六月挑战(6-21-)Dungeon-Game-LeetCode-174解题方案" class="headerlink" title="LeetCode六月挑战(6.21 )Dungeon Game LeetCode 174解题方案"></a>LeetCode六月挑战(6.21 )Dungeon Game LeetCode 174解题方案</h1><p>The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dungeon. The dungeon consists of M x N rooms laid out in a 2D grid. Our valiant knight (K) was initially positioned in the top-left room and must fight his way through the dungeon to rescue the princess.</p>
<p>The knight has an initial health point represented by a positive integer. If at any point his health point drops to 0 or below, he dies immediately.</p>
<p>Some of the rooms are guarded by demons, so the knight loses health (negative integers) upon entering these rooms; other rooms are either empty (0’s) or contain magic orbs that increase the knight’s health (positive integers).</p>
<p>In order to reach the princess as quickly as possible, the knight decides to move only rightward or downward in each step.</p>
<p>Write a function to determine the knight’s minimum initial health so that he is able to rescue the princess.</p>
<p>For example, given the dungeon below, the initial health of the knight must be at least 7 if he follows the optimal path RIGHT-&gt; RIGHT -&gt; DOWN -&gt; DOWN.</p>
<p><img src="https://img-blog.csdnimg.cn/20200621212041700.png" alt><br>Note:</p>
<p>The knight’s health has no upper bound.<br>Any room can contain threats or power-ups, even the first room the knight enters and the bottom-right room where the princess is imprisoned.</p>
</summary>
<category term="LeetCode" scheme="http://yoursite.com/categories/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/categories/LeetCode/June-Leetcoding-Challenge/"/>
<category term="LeetCode" scheme="http://yoursite.com/tags/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/tags/June-Leetcoding-Challenge/"/>
</entry>
<entry>
<title>June Leetcoding Challenge(6.20)</title>
<link href="http://yoursite.com/2020/06/20/LeetCodeJuneChallenge20th/"/>
<id>http://yoursite.com/2020/06/20/LeetCodeJuneChallenge20th/</id>
<published>2020-06-20T12:35:00.000Z</published>
<updated>2020-06-20T14:56:31.835Z</updated>
<content type="html"><![CDATA[<h1 id="LeetCode六月挑战(6-20-)Permutation-Sequence-LeetCode-60"><a href="#LeetCode六月挑战(6-20-)Permutation-Sequence-LeetCode-60" class="headerlink" title="LeetCode六月挑战(6.20 )Permutation Sequence LeetCode 60"></a>LeetCode六月挑战(6.20 )Permutation Sequence LeetCode 60</h1><p>Solution </p><p>The set <code>[1,2,3,...,*n*]</code> contains a total of <em>n</em>! unique permutations.</p><p>By listing and labeling all of the permutations in order, we get the following sequence for <em>n</em> = 3:</p><ol><li><code>"123"</code></li><li><code>"132"</code></li><li><code>"213"</code></li><li><code>"231"</code></li><li><code>"312"</code></li><li><code>"321"</code></li></ol><p>Given <em>n</em> and <em>k</em>, return the <em>k</em>th permutation sequence.</p><p><strong>Note:</strong></p><ul><li>Given <em>n</em> will be between 1 and 9 inclusive.</li><li>Given <em>k</em> will be between 1 and <em>n</em>! inclusive.</li></ul><p><strong>Example 1:</strong></p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Input: n = 3, k = 3</span><br><span class="line">Output: "213"</span><br></pre></td></tr></table></figure><p><strong>Example 2:</strong></p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Input: n = 4, k = 9</span><br><span class="line">Output: "2314"</span><br></pre></td></tr></table></figure><a id="more"></a><h1 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h1><img src="/2020/06/20/LeetCodeJuneChallenge20th/WechatIMG10.png" class title="思路"><h1 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h1><h2 id="java"><a href="#java" class="headerlink" title="java"></a>java</h2><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> String <span class="title">getPermutation</span><span class="params">(<span class="keyword">int</span> n, <span class="keyword">int</span> k)</span> </span>{</span><br><span class="line"> StringBuilder result = <span class="keyword">new</span> StringBuilder(); </span><br><span class="line"> List<Integer> number = <span class="keyword">new</span> ArrayList<>();</span><br><span class="line"> <span class="keyword">int</span>[] fib = <span class="keyword">new</span> <span class="keyword">int</span>[n];</span><br><span class="line"> <span class="keyword">int</span> jiec = <span class="number">1</span>;</span><br><span class="line"> fib[<span class="number">0</span>] = <span class="number">1</span>;</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> i=<span class="number">1</span>;i<n;i++){</span><br><span class="line"> fib[i] = i *fib[i-<span class="number">1</span>];</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> i=<span class="number">1</span>;i<=n;i++)</span><br><span class="line"> number.add(i);</span><br><span class="line"> </span><br><span class="line"> k=k-<span class="number">1</span>;</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> i=n-<span class="number">1</span>;i>=<span class="number">0</span>;i--){</span><br><span class="line"> <span class="keyword">int</span> x = k/fib[i];</span><br><span class="line"> System.out.println(<span class="string">"x = "</span>+x);</span><br><span class="line"> result.append(number.get(x));</span><br><span class="line"> k = k % fib[i];</span><br><span class="line"> number.remove(x);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">return</span> result.toString();</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<h1 id="LeetCode六月挑战(6-20-)Permutation-Sequence-LeetCode-60"><a href="#LeetCode六月挑战(6-20-)Permutation-Sequence-LeetCode-60" class="headerlink" title="LeetCode六月挑战(6.20 )Permutation Sequence LeetCode 60"></a>LeetCode六月挑战(6.20 )Permutation Sequence LeetCode 60</h1><p>Solution </p>
<p>The set <code>[1,2,3,...,*n*]</code> contains a total of <em>n</em>! unique permutations.</p>
<p>By listing and labeling all of the permutations in order, we get the following sequence for <em>n</em> = 3:</p>
<ol>
<li><code>&quot;123&quot;</code></li>
<li><code>&quot;132&quot;</code></li>
<li><code>&quot;213&quot;</code></li>
<li><code>&quot;231&quot;</code></li>
<li><code>&quot;312&quot;</code></li>
<li><code>&quot;321&quot;</code></li>
</ol>
<p>Given <em>n</em> and <em>k</em>, return the <em>k</em>th permutation sequence.</p>
<p><strong>Note:</strong></p>
<ul>
<li>Given <em>n</em> will be between 1 and 9 inclusive.</li>
<li>Given <em>k</em> will be between 1 and <em>n</em>! inclusive.</li>
</ul>
<p><strong>Example 1:</strong></p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Input: n &#x3D; 3, k &#x3D; 3</span><br><span class="line">Output: &quot;213&quot;</span><br></pre></td></tr></table></figure>
<p><strong>Example 2:</strong></p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Input: n &#x3D; 4, k &#x3D; 9</span><br><span class="line">Output: &quot;2314&quot;</span><br></pre></td></tr></table></figure>
</summary>
<category term="LeetCode" scheme="http://yoursite.com/categories/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/categories/LeetCode/June-Leetcoding-Challenge/"/>
<category term="LeetCode" scheme="http://yoursite.com/tags/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/tags/June-Leetcoding-Challenge/"/>
</entry>
<entry>
<title>June Leetcoding Challenge(6.19)</title>
<link href="http://yoursite.com/2020/06/19/LeetCodeJuneChallenge19th/"/>
<id>http://yoursite.com/2020/06/19/LeetCodeJuneChallenge19th/</id>
<published>2020-06-19T12:35:00.000Z</published>
<updated>2020-06-19T13:54:57.654Z</updated>
<content type="html"><![CDATA[<h1 id="LeetCode六月挑战(6-19-)Longest-Duplicate-Substring-LeetCode-1044"><a href="#LeetCode六月挑战(6-19-)Longest-Duplicate-Substring-LeetCode-1044" class="headerlink" title="LeetCode六月挑战(6.19 )Longest Duplicate Substring LeetCode 1044"></a>LeetCode六月挑战(6.19 )Longest Duplicate Substring LeetCode 1044</h1><p>Given a string <code>S</code>, consider all <em>duplicated substrings</em>: (contiguous) substrings of S that occur 2 or more times. (The occurrences may overlap.)</p><p>Return <strong>any</strong> duplicated substring that has the longest possible length. (If <code>S</code> does not have a duplicated substring, the answer is <code>""</code>.)</p><p><strong>Example 1:</strong></p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Input: "banana"</span><br><span class="line">Output: "ana"</span><br></pre></td></tr></table></figure><p><strong>Example 2:</strong></p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Input: "abcd"</span><br><span class="line">Output: ""</span><br></pre></td></tr></table></figure><p><strong>Note:</strong></p><ol><li><code>2 <= S.length <= 10^5</code></li><li><code>S</code> consists of lowercase English letters.</li></ol><a id="more"></a><h1 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h1><ul><li><p>二分答案,得到长度以后,判断字符串是否相同,采用Robin-Karp算法,计算不同长度的字符串对应的哈希值。</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">e.g.</span><br><span class="line">s = banana;</span><br><span class="line"><span class="comment">//将每个字符转换为int类型数组</span></span><br><span class="line">c(b) = s.charAt(<span class="number">0</span>) -<span class="string">'a'</span>;</span><br><span class="line">c(a) = s.charAt(<span class="number">1</span>) - <span class="string">'a'</span>;</span><br><span class="line">c(n) = s.charAt(<span class="number">2</span>) - <span class="string">'a'</span>;</span><br><span class="line">hash(bana) = c(b)*<span class="number">26</span>^<span class="number">3</span>+c(a)*<span class="number">26</span>^<span class="number">2</span>+c(n)*<span class="number">26</span>^<span class="number">1</span>+c(a)*<span class="number">26</span>^<span class="number">0</span>;</span><br><span class="line">hash(anan) = (hash(bana) - c(b)*<span class="number">26</span>^<span class="number">3</span>)*<span class="number">26</span> + c(n)*<span class="number">26</span>^<span class="number">0</span>;</span><br></pre></td></tr></table></figure></li></ul><h1 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h1><h2 id="java"><a href="#java" class="headerlink" title="java"></a>java</h2><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> String <span class="title">longestDupSubstring</span><span class="params">(String S)</span> </span>{</span><br><span class="line"> <span class="keyword">int</span> l = <span class="number">0</span>;</span><br><span class="line"> <span class="keyword">int</span> r = S.length() - <span class="number">1</span>;</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">while</span> (l < r) {</span><br><span class="line"> <span class="keyword">int</span> m = l + ((r - l + <span class="number">1</span>) >> <span class="number">1</span>);</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">if</span> (isDuplicatePresent(S, m)) {</span><br><span class="line"> l = m;</span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> r = m - <span class="number">1</span>;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">return</span> findDuplicate(S, l);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="function"><span class="keyword">private</span> <span class="keyword">boolean</span> <span class="title">isDuplicatePresent</span><span class="params">(String S, <span class="keyword">int</span> length)</span> </span>{</span><br><span class="line"> <span class="keyword">if</span> (length == <span class="number">0</span>)</span><br><span class="line"> <span class="keyword">return</span> <span class="keyword">true</span>;</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">return</span> findDuplicate(S, length) != <span class="keyword">null</span>;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="function"><span class="keyword">private</span> String <span class="title">findDuplicate</span><span class="params">(String S, <span class="keyword">int</span> length)</span> </span>{ </span><br><span class="line"> <span class="keyword">long</span> hash = <span class="number">0</span>;</span><br><span class="line"> <span class="keyword">long</span> prime = <span class="number">26</span>;</span><br><span class="line"> <span class="keyword">long</span> firstEntryPower = <span class="number">1</span>;</span><br><span class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i < length; i++) {</span><br><span class="line"> firstEntryPower *= prime;</span><br><span class="line"> hash = hash * prime + (S.charAt(i) - <span class="string">'a'</span>);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> Map<Long, Integer> map = <span class="keyword">new</span> HashMap<>();</span><br><span class="line"> map.put(hash, <span class="number">0</span>);</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> i = length; i < S.length(); i++) {</span><br><span class="line"> hash = hash * prime + (S.charAt(i) - <span class="string">'a'</span>);</span><br><span class="line"> hash -= firstEntryPower * (S.charAt(i - length) - <span class="string">'a'</span>);</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">if</span> (map.containsKey(hash)) {</span><br><span class="line"> <span class="keyword">int</span> index = map.get(hash);</span><br><span class="line"> <span class="keyword">return</span> S.substring(index, index + length);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> map.put(hash, i - length + <span class="number">1</span>);</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">return</span> <span class="keyword">null</span>;</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<h1 id="LeetCode六月挑战(6-19-)Longest-Duplicate-Substring-LeetCode-1044"><a href="#LeetCode六月挑战(6-19-)Longest-Duplicate-Substring-LeetCode-1044" class="headerlink" title="LeetCode六月挑战(6.19 )Longest Duplicate Substring LeetCode 1044"></a>LeetCode六月挑战(6.19 )Longest Duplicate Substring LeetCode 1044</h1><p>Given a string <code>S</code>, consider all <em>duplicated substrings</em>: (contiguous) substrings of S that occur 2 or more times. (The occurrences may overlap.)</p>
<p>Return <strong>any</strong> duplicated substring that has the longest possible length. (If <code>S</code> does not have a duplicated substring, the answer is <code>&quot;&quot;</code>.)</p>
<p><strong>Example 1:</strong></p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Input: &quot;banana&quot;</span><br><span class="line">Output: &quot;ana&quot;</span><br></pre></td></tr></table></figure>
<p><strong>Example 2:</strong></p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Input: &quot;abcd&quot;</span><br><span class="line">Output: &quot;&quot;</span><br></pre></td></tr></table></figure>
<p><strong>Note:</strong></p>
<ol>
<li><code>2 &lt;= S.length &lt;= 10^5</code></li>
<li><code>S</code> consists of lowercase English letters.</li>
</ol>
</summary>
<category term="LeetCode" scheme="http://yoursite.com/categories/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/categories/LeetCode/June-Leetcoding-Challenge/"/>
<category term="LeetCode" scheme="http://yoursite.com/tags/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/tags/June-Leetcoding-Challenge/"/>
</entry>
<entry>
<title>June Leetcoding Challenge(6.18)</title>
<link href="http://yoursite.com/2020/06/18/LeetCodeJuneChallenge18th/"/>
<id>http://yoursite.com/2020/06/18/LeetCodeJuneChallenge18th/</id>
<published>2020-06-18T12:35:00.000Z</published>
<updated>2020-06-18T11:55:47.192Z</updated>
<content type="html"><![CDATA[<h1 id="LeetCode六月挑战(6-18)-H-Index-II-LeetCode275-解题报告"><a href="#LeetCode六月挑战(6-18)-H-Index-II-LeetCode275-解题报告" class="headerlink" title="LeetCode六月挑战(6.18) H-Index II LeetCode275 解题报告"></a>LeetCode六月挑战(6.18) H-Index II LeetCode275 解题报告</h1><p>今天的题很简单哦!</p><h1 id="题目描述"><a href="#题目描述" class="headerlink" title="题目描述"></a>题目描述</h1><p>Solution<br>Given an array of citations sorted in ascending order (each citation is a non-negative integer) of a researcher, write a function to compute the researcher’s h-index.</p><p>According to the definition of h-index on Wikipedia: “A scientist has index h if h of his/her N papers have at least h citations each, and the other N − h papers have no more than h citations each.”</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">Example:</span><br><span class="line"></span><br><span class="line">Input: citations = [0,1,3,5,6]</span><br><span class="line">Output: 3 </span><br><span class="line">Explanation: [0,1,3,5,6] means the researcher has 5 papers in total and each of them had </span><br><span class="line"> received 0, 1, 3, 5, 6 citations respectively. </span><br><span class="line"> Since the researcher has 3 papers with at least 3 citations each and the remaining </span><br><span class="line"> two with no more than 3 citations each, her h-index is 3.</span><br><span class="line">Note:</span><br><span class="line"></span><br><span class="line">If there are several possible values for h, the maximum one is taken as the h-index.</span><br><span class="line"></span><br><span class="line">Follow up:</span><br><span class="line"></span><br><span class="line">This is a follow up problem to H-Index, where citations is now guaranteed to be sorted in ascending order.</span><br><span class="line">Could you solve it in logarithmic time complexity?</span><br></pre></td></tr></table></figure><a id="more"></a><h1 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h1><p>对与第i篇文章,引用次数是citations[i],那么就有n-i篇文章的引用次数大于等于citations[i]</p><h1 id="Java-代码"><a href="#Java-代码" class="headerlink" title="Java 代码"></a>Java 代码</h1><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">hIndex</span><span class="params">(<span class="keyword">int</span>[] citations)</span> </span>{</span><br><span class="line"> <span class="keyword">int</span> n = citations.length;</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> i=<span class="number">0</span>;i<n;i++){</span><br><span class="line"> <span class="keyword">int</span> N_h = n-i;</span><br><span class="line"> <span class="keyword">if</span>(citations[i]>=N_h)</span><br><span class="line"> <span class="keyword">return</span> N_h;</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<h1 id="LeetCode六月挑战(6-18)-H-Index-II-LeetCode275-解题报告"><a href="#LeetCode六月挑战(6-18)-H-Index-II-LeetCode275-解题报告" class="headerlink" title="LeetCode六月挑战(6.18) H-Index II LeetCode275 解题报告"></a>LeetCode六月挑战(6.18) H-Index II LeetCode275 解题报告</h1><p>今天的题很简单哦!</p>
<h1 id="题目描述"><a href="#题目描述" class="headerlink" title="题目描述"></a>题目描述</h1><p>Solution<br>Given an array of citations sorted in ascending order (each citation is a non-negative integer) of a researcher, write a function to compute the researcher’s h-index.</p>
<p>According to the definition of h-index on Wikipedia: “A scientist has index h if h of his/her N papers have at least h citations each, and the other N − h papers have no more than h citations each.”</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">Example:</span><br><span class="line"></span><br><span class="line">Input: citations &#x3D; [0,1,3,5,6]</span><br><span class="line">Output: 3 </span><br><span class="line">Explanation: [0,1,3,5,6] means the researcher has 5 papers in total and each of them had </span><br><span class="line"> received 0, 1, 3, 5, 6 citations respectively. </span><br><span class="line"> Since the researcher has 3 papers with at least 3 citations each and the remaining </span><br><span class="line"> two with no more than 3 citations each, her h-index is 3.</span><br><span class="line">Note:</span><br><span class="line"></span><br><span class="line">If there are several possible values for h, the maximum one is taken as the h-index.</span><br><span class="line"></span><br><span class="line">Follow up:</span><br><span class="line"></span><br><span class="line">This is a follow up problem to H-Index, where citations is now guaranteed to be sorted in ascending order.</span><br><span class="line">Could you solve it in logarithmic time complexity?</span><br></pre></td></tr></table></figure>
</summary>
<category term="LeetCode" scheme="http://yoursite.com/categories/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/categories/LeetCode/June-Leetcoding-Challenge/"/>
<category term="LeetCode" scheme="http://yoursite.com/tags/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/tags/June-Leetcoding-Challenge/"/>
</entry>
<entry>
<title>June Leetcoding Challenge(6.17)</title>
<link href="http://yoursite.com/2020/06/17/LeetCodeJuneChallenge17th/"/>
<id>http://yoursite.com/2020/06/17/LeetCodeJuneChallenge17th/</id>
<published>2020-06-17T12:35:00.000Z</published>
<updated>2020-06-17T12:44:22.096Z</updated>
<content type="html"><![CDATA[<h1 id="LeetCode六月挑战(6-17)-Surrounded-Regions-LeetCode130-解题报告"><a href="#LeetCode六月挑战(6-17)-Surrounded-Regions-LeetCode130-解题报告" class="headerlink" title="LeetCode六月挑战(6.17) Surrounded Regions LeetCode130 解题报告"></a>LeetCode六月挑战(6.17) Surrounded Regions LeetCode130 解题报告</h1><p>Surrounded Regions</p><p>Solution<br>Given a 2D board containing ‘X’ and ‘O’ (the letter O), capture all regions surrounded by ‘X’.</p><p>A region is captured by flipping all ‘O’s into ‘X’s in that surrounded region.</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">Example:</span><br><span class="line"></span><br><span class="line">X X X X</span><br><span class="line">X O O X</span><br><span class="line">X X O X</span><br><span class="line">X O X X</span><br><span class="line">After running your function, the board should be:</span><br><span class="line"></span><br><span class="line">X X X X</span><br><span class="line">X X X X</span><br><span class="line">X X X X</span><br><span class="line">X O X X</span><br><span class="line">Explanation:</span><br><span class="line"></span><br><span class="line">Surrounded regions shouldn’t be on the border, which means that any 'O' on the border of the board are not flipped to 'X'. Any 'O' that is not on the border and it is not connected to an 'O' on the border will be flipped to 'X'. Two cells are connected if they are adjacent cells connected horizontally or vertically.</span><br></pre></td></tr></table></figure><a id="more"></a><h1 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h1><p>使用DFS搜索O,首先判断O是否在边界,如果在边界并且他的值为O的时候,开始DFS。搜索四个边界里为O的坐标,并将它们设置成G。DFS结束后,开始循环,将为O的地方变为X,将为G的地方变为O即可。</p><h1 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h1><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">solve</span><span class="params">(<span class="keyword">char</span>[][] board)</span> </span>{</span><br><span class="line"> <span class="keyword">int</span> n = board.length;</span><br><span class="line"> <span class="keyword">if</span>(n==<span class="number">0</span>)</span><br><span class="line"> <span class="keyword">return</span>;</span><br><span class="line"> <span class="keyword">int</span> m = board[<span class="number">0</span>].length;</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> i=<span class="number">0</span>;i<n;i++){</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> j=<span class="number">0</span>;j<m;j++){</span><br><span class="line"> <span class="keyword">boolean</span> flag = i==<span class="number">0</span>||j==<span class="number">0</span>||i==n-<span class="number">1</span>||j==m-<span class="number">1</span>;</span><br><span class="line"> <span class="keyword">if</span>(flag && board[i][j]==<span class="string">'O'</span>)</span><br><span class="line"> dfs(board,i,j);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> i=<span class="number">0</span>;i<n;i++){</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> j=<span class="number">0</span>;j<m;j++){</span><br><span class="line"> <span class="keyword">if</span>(board[i][j]==<span class="string">'O'</span>) </span><br><span class="line"> board[i][j] = <span class="string">'X'</span>;</span><br><span class="line"> <span class="keyword">else</span> <span class="keyword">if</span>(board[i][j]==<span class="string">'G'</span>) board[i][j] = <span class="string">'O'</span>;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">dfs</span><span class="params">(<span class="keyword">char</span>[][] board,<span class="keyword">int</span> x, <span class="keyword">int</span> y)</span></span>{</span><br><span class="line"> <span class="keyword">int</span> n = board.length;</span><br><span class="line"> <span class="keyword">int</span> m = board[<span class="number">0</span>].length;</span><br><span class="line"> <span class="keyword">if</span>(x<<span class="number">0</span>||x==n||y<<span class="number">0</span>||y ==m||board[x][y]!=<span class="string">'O'</span>)</span><br><span class="line"> <span class="keyword">return</span>; </span><br><span class="line"> board[x][y]=<span class="string">'G'</span>;</span><br><span class="line"> dfs(board,x,y-<span class="number">1</span>);</span><br><span class="line"> dfs(board,x-<span class="number">1</span>,y);</span><br><span class="line"> dfs(board,x+<span class="number">1</span>,y);</span><br><span class="line"> dfs(board,x,y+<span class="number">1</span>);</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<h1 id="LeetCode六月挑战(6-17)-Surrounded-Regions-LeetCode130-解题报告"><a href="#LeetCode六月挑战(6-17)-Surrounded-Regions-LeetCode130-解题报告" class="headerlink" title="LeetCode六月挑战(6.17) Surrounded Regions LeetCode130 解题报告"></a>LeetCode六月挑战(6.17) Surrounded Regions LeetCode130 解题报告</h1><p>Surrounded Regions</p>
<p>Solution<br>Given a 2D board containing ‘X’ and ‘O’ (the letter O), capture all regions surrounded by ‘X’.</p>
<p>A region is captured by flipping all ‘O’s into ‘X’s in that surrounded region.</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">Example:</span><br><span class="line"></span><br><span class="line">X X X X</span><br><span class="line">X O O X</span><br><span class="line">X X O X</span><br><span class="line">X O X X</span><br><span class="line">After running your function, the board should be:</span><br><span class="line"></span><br><span class="line">X X X X</span><br><span class="line">X X X X</span><br><span class="line">X X X X</span><br><span class="line">X O X X</span><br><span class="line">Explanation:</span><br><span class="line"></span><br><span class="line">Surrounded regions shouldn’t be on the border, which means that any &#39;O&#39; on the border of the board are not flipped to &#39;X&#39;. Any &#39;O&#39; that is not on the border and it is not connected to an &#39;O&#39; on the border will be flipped to &#39;X&#39;. Two cells are connected if they are adjacent cells connected horizontally or vertically.</span><br></pre></td></tr></table></figure>
</summary>
<category term="LeetCode" scheme="http://yoursite.com/categories/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/categories/LeetCode/June-Leetcoding-Challenge/"/>
<category term="LeetCode" scheme="http://yoursite.com/tags/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/tags/June-Leetcoding-Challenge/"/>
</entry>
<entry>
<title>June Leetcoding Challenge(6.16)</title>
<link href="http://yoursite.com/2020/06/16/LeetCodeJuneChallenge16th/"/>
<id>http://yoursite.com/2020/06/16/LeetCodeJuneChallenge16th/</id>
<published>2020-06-16T12:35:00.000Z</published>
<updated>2020-06-16T14:29:01.903Z</updated>
<content type="html"><![CDATA[<h1 id="LeetCode六月挑战(6-16)-Validate-IP-Address-Solution-LeetCode468-解题报告"><a href="#LeetCode六月挑战(6-16)-Validate-IP-Address-Solution-LeetCode468-解题报告" class="headerlink" title="LeetCode六月挑战(6.16) Validate IP Address Solution LeetCode468 解题报告"></a>LeetCode六月挑战(6.16) Validate IP Address Solution LeetCode468 解题报告</h1><p>Write a function to check whether an input string is a valid IPv4 address or IPv6 address or neither.</p><p>IPv4 addresses are canonically represented in dot-decimal notation, which consists of four decimal numbers, each ranging from 0 to 255, separated by dots (“.”), e.g.,172.16.254.1;</p><p>Besides, leading zeros in the IPv4 is invalid. For example, the address 172.16.254.01 is invalid.</p><p>IPv6 addresses are represented as eight groups of four hexadecimal digits, each group representing 16 bits. The groups are separated by colons (“:”). For example, the address 2001:0db8:85a3:0000:0000:8a2e:0370:7334 is a valid one. Also, we could omit some leading zeros among four hexadecimal digits and some low-case characters in the address to upper-case ones, so 2001:db8:85a3:0:0:8A2E:0370:7334 is also a valid IPv6 address(Omit leading zeros and using upper cases).</p><p>However, we don’t replace a consecutive group of zero value with a single empty group using two consecutive colons (::) to pursue simplicity. For example, 2001:0db8:85a3::8A2E:0370:7334 is an invalid IPv6 address.</p><p>Besides, extra leading zeros in the IPv6 is also invalid. For example, the address 02001:0db8:85a3:0000:0000:8a2e:0370:7334 is invalid.</p><p>Note: You may assume there is no extra space or special characters in the input string.</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">Example 1:</span><br><span class="line">Input: "172.16.254.1"</span><br><span class="line"></span><br><span class="line">Output: "IPv4"</span><br><span class="line"></span><br><span class="line">Explanation: This is a valid IPv4 address, return "IPv4".</span><br><span class="line">Example 2:</span><br><span class="line">Input: "2001:0db8:85a3:0:0:8A2E:0370:7334"</span><br><span class="line"></span><br><span class="line">Output: "IPv6"</span><br><span class="line"></span><br><span class="line">Explanation: This is a valid IPv6 address, return "IPv6".</span><br><span class="line">Example 3:</span><br><span class="line">Input: "256.256.256.256"</span><br><span class="line"></span><br><span class="line">Output: "Neither"</span><br><span class="line"></span><br><span class="line">Explanation: This is neither a IPv4 address nor a IPv6 address.</span><br></pre></td></tr></table></figure><a id="more"></a><h1 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h1><p>这个题目是考察String的,我们直接根据IPv4和IPv6的格式进行判断即可,或者采用正则表达式。值得注意的是,split函数在分割 <strong>.</strong> <strong>$</strong> <strong>|</strong> 和 * 等转义字符,必须得加 \\ 。同时分割分数limit应为-1,因为如果最后n位都是切割符,split(“ “)不会继续切分,split(“ “, -1)会继续切分。</p><h1 id="Java代码"><a href="#Java代码" class="headerlink" title="Java代码"></a>Java代码</h1><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> String <span class="title">validIPAddress</span><span class="params">(String IP)</span> </span>{</span><br><span class="line"> <span class="comment">//IPV4</span></span><br><span class="line"> String[] result4 = IP.split(<span class="string">"\\."</span>,-<span class="number">1</span>);</span><br><span class="line"> <span class="keyword">if</span>(result4.length==<span class="number">4</span>){</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> i=<span class="number">0</span>;i<result4.length;i++){</span><br><span class="line"> <span class="keyword">if</span>(result4[i].length()><span class="number">3</span> || result4[i].length()==<span class="number">0</span>)</span><br><span class="line"> <span class="keyword">return</span> <span class="string">"Neither"</span>; </span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">char</span> c: result4[i].toCharArray()){</span><br><span class="line"> <span class="keyword">if</span>(Character.isDigit(c)) <span class="keyword">continue</span>;</span><br><span class="line"> <span class="keyword">else</span></span><br><span class="line"> <span class="keyword">return</span> <span class="string">"Neither"</span>;</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">if</span>(Integer.parseInt(result4[i])><span class="number">255</span> || (result4[i].charAt(<span class="number">0</span>)==<span class="string">'0'</span> && result4[i].length()!=<span class="number">1</span>))</span><br><span class="line"> <span class="keyword">return</span> <span class="string">"Neither"</span>; </span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> <span class="string">"IPv4"</span>;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> </span><br><span class="line"> <span class="comment">//IPV6</span></span><br><span class="line"> String[] result = IP.split(<span class="string">"\\:"</span>,-<span class="number">1</span>);</span><br><span class="line"> <span class="keyword">if</span>(result.length==<span class="number">8</span>){</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> i=<span class="number">0</span>;i<result.length;i++){</span><br><span class="line"> <span class="keyword">if</span>(result[i].length()><span class="number">4</span> || result[i].length()==<span class="number">0</span>)</span><br><span class="line"> <span class="keyword">return</span> <span class="string">"Neither"</span>; </span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">char</span> c: result[i].toCharArray()){</span><br><span class="line"> <span class="keyword">if</span>(Character.isDigit(c)) <span class="keyword">continue</span>;</span><br><span class="line"> <span class="keyword">if</span>(!((c >= <span class="string">'a'</span> && c<= <span class="string">'f'</span>) || (c >= <span class="string">'A'</span> && c<= <span class="string">'F'</span>)))</span><br><span class="line"> <span class="keyword">return</span> <span class="string">"Neither"</span>; </span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> <span class="string">"IPv6"</span>;</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> <span class="string">"Neither"</span>;</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<h1 id="LeetCode六月挑战(6-16)-Validate-IP-Address-Solution-LeetCode468-解题报告"><a href="#LeetCode六月挑战(6-16)-Validate-IP-Address-Solution-LeetCode468-解题报告" class="headerlink" title="LeetCode六月挑战(6.16) Validate IP Address Solution LeetCode468 解题报告"></a>LeetCode六月挑战(6.16) Validate IP Address Solution LeetCode468 解题报告</h1><p>Write a function to check whether an input string is a valid IPv4 address or IPv6 address or neither.</p>
<p>IPv4 addresses are canonically represented in dot-decimal notation, which consists of four decimal numbers, each ranging from 0 to 255, separated by dots (“.”), e.g.,172.16.254.1;</p>
<p>Besides, leading zeros in the IPv4 is invalid. For example, the address 172.16.254.01 is invalid.</p>
<p>IPv6 addresses are represented as eight groups of four hexadecimal digits, each group representing 16 bits. The groups are separated by colons (“:”). For example, the address 2001:0db8:85a3:0000:0000:8a2e:0370:7334 is a valid one. Also, we could omit some leading zeros among four hexadecimal digits and some low-case characters in the address to upper-case ones, so 2001:db8:85a3:0:0:8A2E:0370:7334 is also a valid IPv6 address(Omit leading zeros and using upper cases).</p>
<p>However, we don’t replace a consecutive group of zero value with a single empty group using two consecutive colons (::) to pursue simplicity. For example, 2001:0db8:85a3::8A2E:0370:7334 is an invalid IPv6 address.</p>
<p>Besides, extra leading zeros in the IPv6 is also invalid. For example, the address 02001:0db8:85a3:0000:0000:8a2e:0370:7334 is invalid.</p>
<p>Note: You may assume there is no extra space or special characters in the input string.</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">Example 1:</span><br><span class="line">Input: &quot;172.16.254.1&quot;</span><br><span class="line"></span><br><span class="line">Output: &quot;IPv4&quot;</span><br><span class="line"></span><br><span class="line">Explanation: This is a valid IPv4 address, return &quot;IPv4&quot;.</span><br><span class="line">Example 2:</span><br><span class="line">Input: &quot;2001:0db8:85a3:0:0:8A2E:0370:7334&quot;</span><br><span class="line"></span><br><span class="line">Output: &quot;IPv6&quot;</span><br><span class="line"></span><br><span class="line">Explanation: This is a valid IPv6 address, return &quot;IPv6&quot;.</span><br><span class="line">Example 3:</span><br><span class="line">Input: &quot;256.256.256.256&quot;</span><br><span class="line"></span><br><span class="line">Output: &quot;Neither&quot;</span><br><span class="line"></span><br><span class="line">Explanation: This is neither a IPv4 address nor a IPv6 address.</span><br></pre></td></tr></table></figure>
</summary>
<category term="LeetCode" scheme="http://yoursite.com/categories/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/categories/LeetCode/June-Leetcoding-Challenge/"/>
<category term="LeetCode" scheme="http://yoursite.com/tags/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/tags/June-Leetcoding-Challenge/"/>
</entry>
<entry>
<title>June Leetcoding Challenge(6.15)</title>
<link href="http://yoursite.com/2020/06/15/LeetCodeJuneChallenge15th/"/>
<id>http://yoursite.com/2020/06/15/LeetCodeJuneChallenge15th/</id>
<published>2020-06-15T12:35:00.000Z</published>
<updated>2020-06-15T12:41:02.874Z</updated>
<content type="html"><![CDATA[<h1 id="LeetCode六月挑战(6-15)-Search-in-a-Binary-Search-Tree-LeetCode700-解题报告"><a href="#LeetCode六月挑战(6-15)-Search-in-a-Binary-Search-Tree-LeetCode700-解题报告" class="headerlink" title="LeetCode六月挑战(6.15) Search in a Binary Search Tree LeetCode700 解题报告"></a>LeetCode六月挑战(6.15) Search in a Binary Search Tree LeetCode700 解题报告</h1><p>今天的题目比较简单<br>Search in a Binary Search Tree</p><p>Solution<br>Given the root node of a binary search tree (BST) and a value. You need to find the node in the BST that the node’s value equals the given value. Return the subtree rooted with that node. If such node doesn’t exist, you should return NULL.</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">For example, </span><br><span class="line"></span><br><span class="line">Given the tree:</span><br><span class="line"> 4</span><br><span class="line"> / \</span><br><span class="line"> 2 7</span><br><span class="line"> / \</span><br><span class="line"> 1 3</span><br><span class="line"></span><br><span class="line">And the value to search: 2</span><br><span class="line">You should return this subtree:</span><br><span class="line"></span><br><span class="line"> 2 </span><br><span class="line"> / \ </span><br><span class="line"> 1 3</span><br><span class="line">In the example above, if we want to search the value 5, since there is no node with value 5, we should return NULL.</span><br></pre></td></tr></table></figure><p>Note that an empty tree is represented by NULL, therefore you would see the expected output (serialized tree format) as [], not null.</p><a id="more"></a><h1 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h1><p>递归:<br>首先判断根节点是否为NULL,如果为NULL直接返回NULL,然后比较根节点的值,如果相等就直接返回root,如果不相等,如果小于根节点,则递归searchBST左子树,如果大于根节点,则递归searchBST右子树。</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for a binary tree node.</span></span><br><span class="line"><span class="comment"> * public class TreeNode {</span></span><br><span class="line"><span class="comment"> * int val;</span></span><br><span class="line"><span class="comment"> * TreeNode left;</span></span><br><span class="line"><span class="comment"> * TreeNode right;</span></span><br><span class="line"><span class="comment"> * TreeNode() {}</span></span><br><span class="line"><span class="comment"> * TreeNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> * TreeNode(int val, TreeNode left, TreeNode right) {</span></span><br><span class="line"><span class="comment"> * this.val = val;</span></span><br><span class="line"><span class="comment"> * this.left = left;</span></span><br><span class="line"><span class="comment"> * this.right = right;</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> TreeNode <span class="title">searchBST</span><span class="params">(TreeNode root, <span class="keyword">int</span> val)</span> </span>{</span><br><span class="line"> <span class="keyword">if</span>(root == <span class="keyword">null</span> || val == root.val )</span><br><span class="line"> <span class="keyword">return</span> root;</span><br><span class="line"> <span class="keyword">if</span>(val > root.val)</span><br><span class="line"> <span class="keyword">return</span> searchBST(root.right,val);</span><br><span class="line"> <span class="keyword">return</span> searchBST(root.left,val);</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<h1 id="LeetCode六月挑战(6-15)-Search-in-a-Binary-Search-Tree-LeetCode700-解题报告"><a href="#LeetCode六月挑战(6-15)-Search-in-a-Binary-Search-Tree-LeetCode700-解题报告" class="headerlink" title="LeetCode六月挑战(6.15) Search in a Binary Search Tree LeetCode700 解题报告"></a>LeetCode六月挑战(6.15) Search in a Binary Search Tree LeetCode700 解题报告</h1><p>今天的题目比较简单<br>Search in a Binary Search Tree</p>
<p>Solution<br>Given the root node of a binary search tree (BST) and a value. You need to find the node in the BST that the node’s value equals the given value. Return the subtree rooted with that node. If such node doesn’t exist, you should return NULL.</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">For example, </span><br><span class="line"></span><br><span class="line">Given the tree:</span><br><span class="line"> 4</span><br><span class="line"> &#x2F; \</span><br><span class="line"> 2 7</span><br><span class="line"> &#x2F; \</span><br><span class="line"> 1 3</span><br><span class="line"></span><br><span class="line">And the value to search: 2</span><br><span class="line">You should return this subtree:</span><br><span class="line"></span><br><span class="line"> 2 </span><br><span class="line"> &#x2F; \ </span><br><span class="line"> 1 3</span><br><span class="line">In the example above, if we want to search the value 5, since there is no node with value 5, we should return NULL.</span><br></pre></td></tr></table></figure>
<p>Note that an empty tree is represented by NULL, therefore you would see the expected output (serialized tree format) as [], not null.</p>
</summary>
<category term="LeetCode" scheme="http://yoursite.com/categories/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/categories/LeetCode/June-Leetcoding-Challenge/"/>
<category term="LeetCode" scheme="http://yoursite.com/tags/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/tags/June-Leetcoding-Challenge/"/>
</entry>
<entry>
<title>June Leetcoding Challenge(6.14)</title>
<link href="http://yoursite.com/2020/06/14/LeetCodeJuneChallenge14th/"/>
<id>http://yoursite.com/2020/06/14/LeetCodeJuneChallenge14th/</id>
<published>2020-06-14T12:35:00.000Z</published>
<updated>2020-06-15T12:40:53.391Z</updated>
<content type="html"><![CDATA[<h1 id="LeetCode六月挑战(6-14)-Cheapest-Flights-Within-K-Stops-LeetCode787解题报告"><a href="#LeetCode六月挑战(6-14)-Cheapest-Flights-Within-K-Stops-LeetCode787解题报告" class="headerlink" title="LeetCode六月挑战(6.14) Cheapest Flights Within K Stops LeetCode787解题报告"></a>LeetCode六月挑战(6.14) Cheapest Flights Within K Stops LeetCode787解题报告</h1><p>不知不觉半个月过去了,六月还有半个月哦,加油!</p><h2 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h2><p>There are n cities connected by m flights. Each flight starts from city u and arrives at v with a price w.</p><p>Now given all the cities and flights, together with starting city src and the destination dst, your task is to find the cheapest price from src to dst with up to k stops. If there is no such route, output -1.</p><p>Example 1:<br>Input:<br>n = 3, edges = [[0,1,100],[1,2,100],[0,2,500]]<br>src = 0, dst = 2, k = 1<br>Output: 200<br>Explanation:<br>The graph looks like this:<br><img src="https://img-blog.csdnimg.cn/20200614223513304.png" alt="在这里插入图片描述"></p><p>The cheapest price from city 0 to city 2 with at most 1 stop costs 200, as marked red in the picture.<br>Example 2:<br>Input:<br>n = 3, edges = [[0,1,100],[1,2,100],[0,2,500]]<br>src = 0, dst = 2, k = 0<br>Output: 500<br>Explanation:<br>The graph looks like this:<br>The cheapest price from city 0 to city 2 with at most 0 stop costs 500, as marked blue in the picture.<br><img src="https://img-blog.csdnimg.cn/2020061422352870.png" alt="在这里插入图片描述"></p><a id="more"></a><h1 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h1><p>思路主要由三种:BFS,DFS,DP。BFS和DFS在做的过程中都需要做剪枝处理。Jungle这里采用了DP的方法,DP的方法的核心思想是Bellman-Ford 算法。当不可以转机时,到达目的地1和目的地2的花费分别为100和500,当最多可以转一次机时,直达是500,先转机到1再到2的花费为200。所以最少花费为200.由此得到DP公式dp[i][v] = min(dp[i][v], dp[i-1][u] + cost[u][v]) ,比较直接从i起始地到v目的地的花费和从上一站i-1起始站中转到达v目的地的花费,取两者间的较小的值作为该目的地的最小花费,以便后续作为起始站进行后续的计算。具体代码我们简化DP为一维数组,另设一个cost花费数组记录结果。<br><img src="https://img-blog.csdnimg.cn/20200614224624828.png" alt="在这里插入图片描述"></p><h1 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h1><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">findCheapestPrice</span><span class="params">(<span class="keyword">int</span> n, <span class="keyword">int</span>[][] flights, <span class="keyword">int</span> src, <span class="keyword">int</span> dst, <span class="keyword">int</span> K)</span> </span>{</span><br><span class="line"> <span class="keyword">int</span> max_Cost = <span class="number">1</span><<<span class="number">30</span>;</span><br><span class="line"> <span class="keyword">int</span>[] cost = <span class="keyword">new</span> <span class="keyword">int</span>[n];</span><br><span class="line"> Arrays.fill(cost,max_Cost);</span><br><span class="line"> cost[src] =<span class="number">0</span>;</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> i=<span class="number">0</span>;i<K+<span class="number">1</span>;i++){</span><br><span class="line"> <span class="keyword">int</span>[] tran = cost.clone();</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span>[] flight: flights)</span><br><span class="line"> tran[flight[<span class="number">1</span>]] = Math.min(tran[flight[<span class="number">1</span>]], cost[flight[<span class="number">0</span>]]+flight[<span class="number">2</span>]);</span><br><span class="line"> cost = tran;</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> cost[dst]>= max_Cost ? -<span class="number">1</span> : cost[dst];</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<h1 id="LeetCode六月挑战(6-14)-Cheapest-Flights-Within-K-Stops-LeetCode787解题报告"><a href="#LeetCode六月挑战(6-14)-Cheapest-Flights-Within-K-Stops-LeetCode787解题报告" class="headerlink" title="LeetCode六月挑战(6.14) Cheapest Flights Within K Stops LeetCode787解题报告"></a>LeetCode六月挑战(6.14) Cheapest Flights Within K Stops LeetCode787解题报告</h1><p>不知不觉半个月过去了,六月还有半个月哦,加油!</p>
<h2 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h2><p>There are n cities connected by m flights. Each flight starts from city u and arrives at v with a price w.</p>
<p>Now given all the cities and flights, together with starting city src and the destination dst, your task is to find the cheapest price from src to dst with up to k stops. If there is no such route, output -1.</p>
<p>Example 1:<br>Input:<br>n = 3, edges = [[0,1,100],[1,2,100],[0,2,500]]<br>src = 0, dst = 2, k = 1<br>Output: 200<br>Explanation:<br>The graph looks like this:<br><img src="https://img-blog.csdnimg.cn/20200614223513304.png" alt="在这里插入图片描述"></p>
<p>The cheapest price from city 0 to city 2 with at most 1 stop costs 200, as marked red in the picture.<br>Example 2:<br>Input:<br>n = 3, edges = [[0,1,100],[1,2,100],[0,2,500]]<br>src = 0, dst = 2, k = 0<br>Output: 500<br>Explanation:<br>The graph looks like this:<br>The cheapest price from city 0 to city 2 with at most 0 stop costs 500, as marked blue in the picture.<br><img src="https://img-blog.csdnimg.cn/2020061422352870.png" alt="在这里插入图片描述"></p>
</summary>
<category term="LeetCode" scheme="http://yoursite.com/categories/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/categories/LeetCode/June-Leetcoding-Challenge/"/>
<category term="LeetCode" scheme="http://yoursite.com/tags/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/tags/June-Leetcoding-Challenge/"/>
</entry>
<entry>
<title>June Leetcoding Challenge(6.13)</title>
<link href="http://yoursite.com/2020/06/13/LeetCodeJuneChallenge13th/"/>
<id>http://yoursite.com/2020/06/13/LeetCodeJuneChallenge13th/</id>
<published>2020-06-13T16:07:24.428Z</published>
<updated>2020-06-13T16:07:24.428Z</updated>
<content type="html"><![CDATA[<h1 id="LeetCode六月挑战-6-13-Largest-Divisible-Subset-Solution解题方案"><a href="#LeetCode六月挑战-6-13-Largest-Divisible-Subset-Solution解题方案" class="headerlink" title="LeetCode六月挑战(6.13)Largest Divisible Subset Solution解题方案"></a>LeetCode六月挑战(6.13)Largest Divisible Subset Solution解题方案</h1><p> Largest Divisible Subset</p><p>Solution<br>Given a set of distinct positive integers, find the largest subset such that every pair (Si, Sj) of elements in this subset satisfies:</p><p>Si % Sj = 0 or Sj % Si = 0.</p><p>If there are multiple solutions, return any subset is fine.</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">Example 1:</span><br><span class="line"></span><br><span class="line">Input: [1,2,3]</span><br><span class="line">Output: [1,2] (of course, [1,3] will also be ok)</span><br><span class="line">Example 2:</span><br><span class="line"></span><br><span class="line">Input: [1,2,4,8]</span><br><span class="line">Output: [1,2,4,8]</span><br></pre></td></tr></table></figure><a id="more"></a><h1 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h1><p>这道题有一个数学思路在里面<br>对于一个有序数组,插入的数如果能整除数组中最大的数,那么也可以整除数组中其他的数。<br>因此我们要先将数组排序,然后设置一个路径储存数组记录添加元素的路径。</p><h1 id="Java代码"><a href="#Java代码" class="headerlink" title="Java代码"></a>Java代码</h1><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> List<Integer> <span class="title">largestDivisibleSubset</span><span class="params">(<span class="keyword">int</span>[] nums)</span> </span>{</span><br><span class="line"> <span class="keyword">int</span> n = nums.length;</span><br><span class="line"> Arrays.sort(nums);</span><br><span class="line"> <span class="keyword">int</span>[] count = <span class="keyword">new</span> <span class="keyword">int</span>[n];</span><br><span class="line"> <span class="keyword">int</span>[] road = <span class="keyword">new</span> <span class="keyword">int</span>[n];</span><br><span class="line"> <span class="keyword">int</span> max = <span class="number">0</span>, index = -<span class="number">1</span>;</span><br><span class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i < n; i++) {</span><br><span class="line"> count[i] = <span class="number">1</span>;</span><br><span class="line"> road[i] = -<span class="number">1</span>;</span><br><span class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> j = i - <span class="number">1</span>; j >= <span class="number">0</span>; j--) {</span><br><span class="line"> <span class="keyword">if</span> (nums[i] % nums[j] == <span class="number">0</span>) {</span><br><span class="line"> <span class="keyword">if</span> (count[i] < <span class="number">1</span> + count[j]) {</span><br><span class="line"> count[i] = count[j] + <span class="number">1</span>;</span><br><span class="line"> road[i] = j;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">if</span> (count[i] > max) {</span><br><span class="line"> max = count[i];</span><br><span class="line"> index = i;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> List<Integer> result = <span class="keyword">new</span> ArrayList<>();</span><br><span class="line"> <span class="keyword">while</span> (index != -<span class="number">1</span>) {</span><br><span class="line"> result.add(nums[index]);</span><br><span class="line"> index = road[index];</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> result;</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<h1 id="LeetCode六月挑战-6-13-Largest-Divisible-Subset-Solution解题方案"><a href="#LeetCode六月挑战-6-13-Largest-Divisible-Subset-Solution解题方案" class="headerlink" title="LeetCode六月挑战(6.13)Largest Divisible Subset Solution解题方案"></a>LeetCode六月挑战(6.13)Largest Divisible Subset Solution解题方案</h1><p> Largest Divisible Subset</p>
<p>Solution<br>Given a set of distinct positive integers, find the largest subset such that every pair (Si, Sj) of elements in this subset satisfies:</p>
<p>Si % Sj = 0 or Sj % Si = 0.</p>
<p>If there are multiple solutions, return any subset is fine.</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">Example 1:</span><br><span class="line"></span><br><span class="line">Input: [1,2,3]</span><br><span class="line">Output: [1,2] (of course, [1,3] will also be ok)</span><br><span class="line">Example 2:</span><br><span class="line"></span><br><span class="line">Input: [1,2,4,8]</span><br><span class="line">Output: [1,2,4,8]</span><br></pre></td></tr></table></figure>
</summary>
<category term="LeetCode" scheme="http://yoursite.com/categories/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/categories/LeetCode/June-Leetcoding-Challenge/"/>
<category term="LeetCode" scheme="http://yoursite.com/tags/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/tags/June-Leetcoding-Challenge/"/>
</entry>
<entry>
<title>June Leetcoding Challenge(6.12)</title>
<link href="http://yoursite.com/2020/06/12/LeetcodeJune12/"/>
<id>http://yoursite.com/2020/06/12/LeetcodeJune12/</id>
<published>2020-06-12T12:23:22.524Z</published>
<updated>2020-06-12T12:25:34.931Z</updated>
<content type="html"><![CDATA[<h1 id="Leetcode六月挑战赛(6-12)"><a href="#Leetcode六月挑战赛(6-12)" class="headerlink" title="Leetcode六月挑战赛(6.12)"></a>Leetcode六月挑战赛(6.12)</h1><h1 id="Leetcode380-Insert-Delete-GetRandom-O-1"><a href="#Leetcode380-Insert-Delete-GetRandom-O-1" class="headerlink" title="Leetcode380 Insert Delete GetRandom O(1)"></a>Leetcode380 Insert Delete GetRandom O(1)</h1><p>这是之前做过的一道题,我们再来详细分析一下。</p><h2 id="题目描述"><a href="#题目描述" class="headerlink" title="题目描述"></a>题目描述</h2><p>Design a data structure that supports all following operations in <em>average</em> <strong>O(1)</strong> time.</p><ol><li><code>insert(val)</code>: Inserts an item val to the set if not already present.</li><li><code>remove(val)</code>: Removes an item val from the set if present.</li><li><code>getRandom</code>: Returns a random element from current set of elements. Each element must have the <strong>same probability</strong> of being returned.</li></ol><p><strong>Example:</strong></p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line">// Init an empty set.</span><br><span class="line">RandomizedSet randomSet = new RandomizedSet();</span><br><span class="line"></span><br><span class="line">// Inserts 1 to the set. Returns true as 1 was inserted successfully.</span><br><span class="line">randomSet.insert(1);</span><br><span class="line"></span><br><span class="line">// Returns false as 2 does not exist in the set.</span><br><span class="line">randomSet.remove(2);</span><br><span class="line"></span><br><span class="line">// Inserts 2 to the set, returns true. Set now contains [1,2].</span><br><span class="line">randomSet.insert(2);</span><br><span class="line"></span><br><span class="line">// getRandom should return either 1 or 2 randomly.</span><br><span class="line">randomSet.getRandom();</span><br><span class="line"></span><br><span class="line">// Removes 1 from the set, returns true. Set now contains [2].</span><br><span class="line">randomSet.remove(1);</span><br><span class="line"></span><br><span class="line">// 2 was already in the set, so return false.</span><br><span class="line">randomSet.insert(2);</span><br><span class="line"></span><br><span class="line">// Since 2 is the only number in the set, getRandom always return 2.</span><br><span class="line">randomSet.getRandom();</span><br></pre></td></tr></table></figure><a id="more"></a><h2 id="思路:"><a href="#思路:" class="headerlink" title="思路:"></a>思路:</h2><p>Hashmap存放加入的val和在list的位置,list中存储每一个val。则每一个val对应的index为map.get(val)。如果index为null或者list.get(index)为null则代表list中没有该元素,若调用insert加入并返回true, 若调用remove则返回false。定义一个random对象,随机获取index,若list.get(index)为空,则重新随机获取。</p><h2 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h2><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">RandomizedSet</span> </span>{</span><br><span class="line"> </span><br><span class="line"> HashMap<Integer,Integer> map;</span><br><span class="line"> List<Integer> list;</span><br><span class="line"> Random rd = <span class="keyword">new</span> Random();</span><br><span class="line"> <span class="comment">/** Initialize your data structure here. */</span></span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="title">RandomizedSet</span><span class="params">()</span> </span>{</span><br><span class="line"> map = <span class="keyword">new</span> HashMap<>();</span><br><span class="line"> list = <span class="keyword">new</span> ArrayList<>();</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="comment">/** Inserts a value to the set. Returns true if the set did not already contain the specified element. */</span></span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">boolean</span> <span class="title">insert</span><span class="params">(<span class="keyword">int</span> val)</span> </span>{</span><br><span class="line"> Integer index = map.get(val);</span><br><span class="line"> <span class="keyword">if</span>(index != <span class="keyword">null</span> && list.get(index)!=<span class="keyword">null</span> )</span><br><span class="line"> <span class="keyword">return</span> <span class="keyword">false</span>;</span><br><span class="line"> <span class="keyword">else</span>{</span><br><span class="line"> list.add(val);</span><br><span class="line"> map.put(val,list.size()-<span class="number">1</span>);</span><br><span class="line"> <span class="keyword">return</span> <span class="keyword">true</span>;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="comment">/** Removes a value from the set. Returns true if the set contained the specified element. */</span></span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">boolean</span> <span class="title">remove</span><span class="params">(<span class="keyword">int</span> val)</span> </span>{</span><br><span class="line"> Integer index = map.get(val);</span><br><span class="line"> <span class="keyword">if</span>(index!=<span class="keyword">null</span>&& list.get(index)!=<span class="keyword">null</span>){</span><br><span class="line"> list.set(index,<span class="keyword">null</span>);</span><br><span class="line"> <span class="keyword">return</span> <span class="keyword">true</span>;</span><br><span class="line"> }<span class="keyword">else</span></span><br><span class="line"> <span class="keyword">return</span> <span class="keyword">false</span>;</span><br><span class="line"> </span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="comment">/** Get a random element from the set. */</span></span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">getRandom</span><span class="params">()</span> </span>{</span><br><span class="line"> Integer index = rd.nextInt(list.size());</span><br><span class="line"> <span class="keyword">while</span>(list.get(index)==<span class="keyword">null</span>){</span><br><span class="line"> index = rd.nextInt(list.size());</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> list.get(index);</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<h1 id="Leetcode六月挑战赛(6-12)"><a href="#Leetcode六月挑战赛(6-12)" class="headerlink" title="Leetcode六月挑战赛(6.12)"></a>Leetcode六月挑战赛(6.12)</h1><h1 id="Leetcode380-Insert-Delete-GetRandom-O-1"><a href="#Leetcode380-Insert-Delete-GetRandom-O-1" class="headerlink" title="Leetcode380 Insert Delete GetRandom O(1)"></a>Leetcode380 Insert Delete GetRandom O(1)</h1><p>这是之前做过的一道题,我们再来详细分析一下。</p>
<h2 id="题目描述"><a href="#题目描述" class="headerlink" title="题目描述"></a>题目描述</h2><p>Design a data structure that supports all following operations in <em>average</em> <strong>O(1)</strong> time.</p>
<ol>
<li><code>insert(val)</code>: Inserts an item val to the set if not already present.</li>
<li><code>remove(val)</code>: Removes an item val from the set if present.</li>
<li><code>getRandom</code>: Returns a random element from current set of elements. Each element must have the <strong>same probability</strong> of being returned.</li>
</ol>
<p><strong>Example:</strong></p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line">&#x2F;&#x2F; Init an empty set.</span><br><span class="line">RandomizedSet randomSet &#x3D; new RandomizedSet();</span><br><span class="line"></span><br><span class="line">&#x2F;&#x2F; Inserts 1 to the set. Returns true as 1 was inserted successfully.</span><br><span class="line">randomSet.insert(1);</span><br><span class="line"></span><br><span class="line">&#x2F;&#x2F; Returns false as 2 does not exist in the set.</span><br><span class="line">randomSet.remove(2);</span><br><span class="line"></span><br><span class="line">&#x2F;&#x2F; Inserts 2 to the set, returns true. Set now contains [1,2].</span><br><span class="line">randomSet.insert(2);</span><br><span class="line"></span><br><span class="line">&#x2F;&#x2F; getRandom should return either 1 or 2 randomly.</span><br><span class="line">randomSet.getRandom();</span><br><span class="line"></span><br><span class="line">&#x2F;&#x2F; Removes 1 from the set, returns true. Set now contains [2].</span><br><span class="line">randomSet.remove(1);</span><br><span class="line"></span><br><span class="line">&#x2F;&#x2F; 2 was already in the set, so return false.</span><br><span class="line">randomSet.insert(2);</span><br><span class="line"></span><br><span class="line">&#x2F;&#x2F; Since 2 is the only number in the set, getRandom always return 2.</span><br><span class="line">randomSet.getRandom();</span><br></pre></td></tr></table></figure>
</summary>
<category term="LeetCode" scheme="http://yoursite.com/categories/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/categories/LeetCode/June-Leetcoding-Challenge/"/>
<category term="LeetCode" scheme="http://yoursite.com/tags/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/tags/June-Leetcoding-Challenge/"/>
</entry>
<entry>
<title>June Leetcoding Challenge(6.11)</title>
<link href="http://yoursite.com/2020/06/11/LeetCode%E5%85%AD%E6%9C%88%E6%8C%91%E6%88%9811th/"/>
<id>http://yoursite.com/2020/06/11/LeetCode%E5%85%AD%E6%9C%88%E6%8C%91%E6%88%9811th/</id>
<published>2020-06-11T14:26:58.979Z</published>
<updated>2020-06-11T14:41:53.885Z</updated>
<content type="html"><![CDATA[<h1 id="LeetCode六月挑战-6-11-Sort-Color"><a href="#LeetCode六月挑战-6-11-Sort-Color" class="headerlink" title="LeetCode六月挑战(6.11) Sort Color"></a>LeetCode六月挑战(6.11) Sort Color</h1><p>Solution<br>Given an array with n objects colored red, white or blue, sort them in-place so that objects of the same color are adjacent, with the colors in the order red, white and blue.</p><p>Here, we will use the integers 0, 1, and 2 to represent the color red, white, and blue respectively.</p><p>Note: You are not suppose to use the library’s sort function for this problem.</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">Example:</span><br><span class="line"></span><br><span class="line">Input: [2,0,2,1,1,0]</span><br><span class="line">Output: [0,0,1,1,2,2]</span><br></pre></td></tr></table></figure> <a id="more"></a><h1 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h1><p>(一)直接排序法<br>直接排序法,由于需要直接在原数组上,首先找到整个数组中最小的数,然后将他放在第一个,然后再找后面未排好数组中最小的数,放在未排序数组的第一位,以此类推。</p><p>(二) 设置三个指针,p0指向0的最右边,p2指向2的最左边,p1指向当前位置,如果p1指向的是0和p0交换,然后将p0和p1向右移动,如果p1指向的是2和p2交换,p1向右移动,p2向左移动,是1则继续。</p><h1 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h1><h2 id="Java代码"><a href="#Java代码" class="headerlink" title="Java代码"></a>Java代码</h2><h3 id="第一种"><a href="#第一种" class="headerlink" title="第一种"></a>第一种</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">sortColors</span><span class="params">(<span class="keyword">int</span>[] nums)</span> </span>{</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> i=<span class="number">0</span>;i<nums.length;i++){</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> j=i+<span class="number">1</span>;j<nums.length;j++){</span><br><span class="line"> <span class="keyword">if</span>(nums[i]>nums[j]){</span><br><span class="line"> <span class="keyword">int</span> tmp = nums[i];</span><br><span class="line"> nums[i] = nums[j];</span><br><span class="line"> nums[j] = tmp;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure><h3 id="第二种"><a href="#第二种" class="headerlink" title="第二种"></a>第二种</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">sortColors</span><span class="params">(<span class="keyword">int</span>[] nums)</span> </span>{</span><br><span class="line"> <span class="keyword">int</span> p2 = nums.length-<span class="number">1</span>;</span><br><span class="line"> <span class="keyword">int</span> p1=<span class="number">0</span>;</span><br><span class="line"> <span class="keyword">int</span> p0=<span class="number">0</span>;</span><br><span class="line"> <span class="keyword">while</span> (p1<=p2){</span><br><span class="line"> <span class="keyword">if</span> (nums[p1] == <span class="number">0</span>){</span><br><span class="line"> <span class="keyword">int</span> tmp = nums[p0];</span><br><span class="line"> nums[p0] = nums[p1];</span><br><span class="line"> nums[p1] = tmp;</span><br><span class="line"> p0++;</span><br><span class="line"> p1++;</span><br><span class="line"> }<span class="keyword">else</span> <span class="keyword">if</span>(nums[p1] == <span class="number">2</span>){</span><br><span class="line"> <span class="keyword">int</span> tmp = nums[p2];</span><br><span class="line"> nums[p2] = nums[p1];</span><br><span class="line"> nums[p1] = tmp;</span><br><span class="line"> p2--;</span><br><span class="line"> }<span class="keyword">else</span>{</span><br><span class="line"> p1++;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure><h2 id="Python代码"><a href="#Python代码" class="headerlink" title="Python代码"></a>Python代码</h2><h3 id="第一种-1"><a href="#第一种-1" class="headerlink" title="第一种"></a>第一种</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">sortColors</span><span class="params">(self, nums: List[int])</span> -> <span class="keyword">None</span>:</span></span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> Do not return anything, modify nums in-place instead.</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> n = len(nums);</span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> range (<span class="number">-1</span>,n):</span><br><span class="line"> <span class="keyword">for</span> j <span class="keyword">in</span> range (i+<span class="number">1</span>, n):</span><br><span class="line"> <span class="keyword">if</span>(nums[i]>nums[j]):</span><br><span class="line"> tmp = nums[i];</span><br><span class="line"> nums[i] = nums[j];</span><br><span class="line"> nums[j] = tm</span><br></pre></td></tr></table></figure><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">sortColors</span><span class="params">(self, nums: List[int])</span> -> <span class="keyword">None</span>:</span></span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> Do not return anything, modify nums in-place instead.</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> p2 = len(nums)<span class="number">-1</span>;</span><br><span class="line"> p1=<span class="number">0</span>;</span><br><span class="line"> p0=<span class="number">0</span>;</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">while</span> p1<=p2:</span><br><span class="line"> <span class="keyword">if</span> nums[p1] == <span class="number">0</span>:</span><br><span class="line"> nums[p0] , nums[p1] = nums[p1] , nums[p0];</span><br><span class="line"> p1+=<span class="number">1</span>;</span><br><span class="line"> p0+=<span class="number">1</span>;</span><br><span class="line"> <span class="keyword">elif</span> nums[p1] == <span class="number">2</span>:</span><br><span class="line"> nums[p1] , nums[p2] = nums[p2] , nums[p1];</span><br><span class="line"> p2-=<span class="number">1</span>;</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> p1+=<span class="number">1</span>;</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<h1 id="LeetCode六月挑战-6-11-Sort-Color"><a href="#LeetCode六月挑战-6-11-Sort-Color" class="headerlink" title="LeetCode六月挑战(6.11) Sort Color"></a>LeetCode六月挑战(6.11) Sort Color</h1><p>Solution<br>Given an array with n objects colored red, white or blue, sort them in-place so that objects of the same color are adjacent, with the colors in the order red, white and blue.</p>
<p>Here, we will use the integers 0, 1, and 2 to represent the color red, white, and blue respectively.</p>
<p>Note: You are not suppose to use the library’s sort function for this problem.</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">Example:</span><br><span class="line"></span><br><span class="line">Input: [2,0,2,1,1,0]</span><br><span class="line">Output: [0,0,1,1,2,2]</span><br></pre></td></tr></table></figure>
</summary>
<category term="LeetCode" scheme="http://yoursite.com/categories/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/categories/LeetCode/June-Leetcoding-Challenge/"/>
<category term="LeetCode" scheme="http://yoursite.com/tags/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/tags/June-Leetcoding-Challenge/"/>
</entry>
<entry>
<title>June Leetcoding Challenge(6.10)</title>
<link href="http://yoursite.com/2020/06/10/LeetCode%E5%85%AD%E6%9C%88%E6%8C%91%E6%88%98%EF%BC%886.10%20)%20Search%20Insert%20Position%20LeetCode%2035/"/>
<id>http://yoursite.com/2020/06/10/LeetCode%E5%85%AD%E6%9C%88%E6%8C%91%E6%88%98%EF%BC%886.10%20)%20Search%20Insert%20Position%20LeetCode%2035/</id>
<published>2020-06-10T13:11:05.193Z</published>
<updated>2020-06-11T14:43:30.706Z</updated>
<content type="html"><![CDATA[<h1 id="LeetCode六月挑战(6-10-Search-Insert-Position-LeetCode-35"><a href="#LeetCode六月挑战(6-10-Search-Insert-Position-LeetCode-35" class="headerlink" title="LeetCode六月挑战(6.10 ) Search Insert Position LeetCode 35"></a>LeetCode六月挑战(6.10 ) Search Insert Position LeetCode 35</h1><p>Solution<br>Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.</p><p>You may assume no duplicates in the array.</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">Example 1:</span><br><span class="line"></span><br><span class="line">Input: [1,3,5,6], 5</span><br><span class="line">Output: 2</span><br><span class="line">Example 2:</span><br><span class="line"></span><br><span class="line">Input: [1,3,5,6], 2</span><br><span class="line">Output: 1</span><br><span class="line">Example 3:</span><br><span class="line"></span><br><span class="line">Input: [1,3,5,6], 7</span><br><span class="line">Output: 4</span><br><span class="line">Example 4:</span><br><span class="line"></span><br><span class="line">Input: [1,3,5,6], 0</span><br><span class="line">Output: 0</span><br></pre></td></tr></table></figure><a id="more"></a><h1 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h1><p>如果target在nums数组中存在,我们直接返回i的值,如果不存在,我们需要判断target的位置,如果他大于i却小于i+1,那么index为i+1.</p><h1 id="Java代码"><a href="#Java代码" class="headerlink" title="Java代码"></a>Java代码</h1><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">searchInsert</span><span class="params">(<span class="keyword">int</span>[] nums, <span class="keyword">int</span> target)</span> </span>{</span><br><span class="line"> <span class="keyword">int</span> index =<span class="number">0</span>;</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> i =<span class="number">0</span>;i<nums.length;i++){</span><br><span class="line"> <span class="keyword">if</span>(target == nums[i])</span><br><span class="line"> index = i;</span><br><span class="line"> <span class="keyword">else</span> <span class="keyword">if</span>(target>nums[i]){</span><br><span class="line"> <span class="keyword">if</span>(i==nums.length-<span class="number">1</span> && target>nums[i])</span><br><span class="line"> index = nums.length;</span><br><span class="line"> <span class="keyword">else</span> <span class="keyword">if</span>(target<nums[i+<span class="number">1</span>])</span><br><span class="line"> index = i+<span class="number">1</span>;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> index;</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure><h1 id="Python代码"><a href="#Python代码" class="headerlink" title="Python代码"></a>Python代码</h1><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">searchInsert</span><span class="params">(self, nums: List[int], target: int)</span> -> int:</span></span><br><span class="line"> index =<span class="number">0</span>;</span><br><span class="line"> x = len(nums)<span class="number">-1</span>;</span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> range (<span class="number">-1</span>,x+<span class="number">1</span>):</span><br><span class="line"> <span class="keyword">if</span> nums[i] == target:</span><br><span class="line"> index = i;</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="keyword">if</span> i == x <span class="keyword">and</span> nums[i] < target:</span><br><span class="line"> index = x+<span class="number">1</span>;</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="keyword">if</span> target > nums[i] <span class="keyword">and</span> target < nums[i+<span class="number">1</span>]:</span><br><span class="line"> index = i+<span class="number">1</span></span><br><span class="line"> <span class="keyword">return</span> index;</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<h1 id="LeetCode六月挑战(6-10-Search-Insert-Position-LeetCode-35"><a href="#LeetCode六月挑战(6-10-Search-Insert-Position-LeetCode-35" class="headerlink" title="LeetCode六月挑战(6.10 ) Search Insert Position LeetCode 35"></a>LeetCode六月挑战(6.10 ) Search Insert Position LeetCode 35</h1><p>Solution<br>Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.</p>
<p>You may assume no duplicates in the array.</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">Example 1:</span><br><span class="line"></span><br><span class="line">Input: [1,3,5,6], 5</span><br><span class="line">Output: 2</span><br><span class="line">Example 2:</span><br><span class="line"></span><br><span class="line">Input: [1,3,5,6], 2</span><br><span class="line">Output: 1</span><br><span class="line">Example 3:</span><br><span class="line"></span><br><span class="line">Input: [1,3,5,6], 7</span><br><span class="line">Output: 4</span><br><span class="line">Example 4:</span><br><span class="line"></span><br><span class="line">Input: [1,3,5,6], 0</span><br><span class="line">Output: 0</span><br></pre></td></tr></table></figure>
</summary>
<category term="LeetCode" scheme="http://yoursite.com/categories/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/categories/LeetCode/June-Leetcoding-Challenge/"/>
<category term="LeetCode" scheme="http://yoursite.com/tags/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/tags/June-Leetcoding-Challenge/"/>
</entry>
<entry>
<title>NODEMCU搭建ArduinoIDE开发环境</title>
<link href="http://yoursite.com/2020/06/09/NODEMCU%E6%90%AD%E5%BB%BAArduinoIDE%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/"/>
<id>http://yoursite.com/2020/06/09/NODEMCU%E6%90%AD%E5%BB%BAArduinoIDE%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/</id>
<published>2020-06-09T23:30:29.592Z</published>
<updated>2020-06-10T01:01:10.286Z</updated>
<content type="html"><![CDATA[<h1 id="NODEMCU驱动安装"><a href="#NODEMCU驱动安装" class="headerlink" title="NODEMCU驱动安装"></a>NODEMCU驱动安装</h1><h2 id="工具"><a href="#工具" class="headerlink" title="工具"></a>工具</h2><p>使用windows系统<br>下载Arduino IDE,我直接从官网下载的,这里是<a href="https://www.arduino.cc/en/Main/Software" target="_blank" rel="noopener">传送门</a></p><a id="more"></a><h2 id="Step1-下载并安装Arduino"><a href="#Step1-下载并安装Arduino" class="headerlink" title="Step1 下载并安装Arduino"></a>Step1 下载并安装Arduino</h2><p>windows很简单,只需要下载zip文件解压,找到arduino.exe双击运行即可。</p><p>Mac版本相对来说比较复杂,需要从在system preferences中设置一下。</p><h3 id="将下载好的zip解压,然后将解压出来的文件拖到Application中"><a href="#将下载好的zip解压,然后将解压出来的文件拖到Application中" class="headerlink" title="将下载好的zip解压,然后将解压出来的文件拖到Application中"></a>将下载好的zip解压,然后将解压出来的文件拖到Application中</h3><img src="/2020/06/09/NODEMCU%E6%90%AD%E5%BB%BAArduinoIDE%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/WechatIMG29.png" class><p>这个时候的Arduino是不能用的,因为并未授权</p><img src="/2020/06/09/NODEMCU%E6%90%AD%E5%BB%BAArduinoIDE%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/WechatIMG30.png" class><p>这个时候我们可以打开System Preferences 即系统设置</p><p>我们选择Sercurity & Privacy,然后在General中点击Open Anyway</p><img src="/2020/06/09/NODEMCU%E6%90%AD%E5%BB%BAArduinoIDE%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/WechatIMG31.png" class><img src="/2020/06/09/NODEMCU%E6%90%AD%E5%BB%BAArduinoIDE%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/WechatIMG32.png" class><p>这样我们就打开Arduino IDE了</p><h2 id="Step2-打开ArduinoIDE-选择Preferences"><a href="#Step2-打开ArduinoIDE-选择Preferences" class="headerlink" title="Step2 打开ArduinoIDE 选择Preferences"></a>Step2 打开ArduinoIDE 选择Preferences</h2><img src="/2020/06/09/NODEMCU%E6%90%AD%E5%BB%BAArduinoIDE%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/WechatIMG25.png" class title="驱动程序"><p>在下图位置填写以下内容</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">http://arduino.esp8266.com/stable/package_esp8266com_index.json</span><br></pre></td></tr></table></figure><img src="/2020/06/09/NODEMCU%E6%90%AD%E5%BB%BAArduinoIDE%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/WechatIMG27.png" class><h2 id="Step3-设置Board"><a href="#Step3-设置Board" class="headerlink" title="Step3 设置Board"></a>Step3 设置Board</h2><p>由于我已经设置过了,这里直接显示一下步骤和结果</p><img src="/2020/06/09/NODEMCU%E6%90%AD%E5%BB%BAArduinoIDE%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/WechatIMG35.png" class><img src="/2020/06/09/NODEMCU%E6%90%AD%E5%BB%BAArduinoIDE%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/WechatIMG36.png" class><h2 id="Step4-选择NodeMCU开发版,并设置端口号"><a href="#Step4-选择NodeMCU开发版,并设置端口号" class="headerlink" title="Step4 选择NodeMCU开发版,并设置端口号"></a>Step4 选择NodeMCU开发版,并设置端口号</h2><p>我们可以从下图位置获取NodeMCU的端口号</p><img src="/2020/06/09/NODEMCU%E6%90%AD%E5%BB%BAArduinoIDE%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/WechatIMG18.png" class><p>选择NodeMCU开发版</p><img src="/2020/06/09/NODEMCU%E6%90%AD%E5%BB%BAArduinoIDE%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/WechatIMG37.png" class><img src="/2020/06/09/NODEMCU%E6%90%AD%E5%BB%BAArduinoIDE%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/WechatIMG38.png" class><h2 id="Step5-打开Blink示例程序,编译上传"><a href="#Step5-打开Blink示例程序,编译上传" class="headerlink" title="Step5 打开Blink示例程序,编译上传"></a>Step5 打开Blink示例程序,编译上传</h2><img src="/2020/06/09/NODEMCU%E6%90%AD%E5%BB%BAArduinoIDE%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/WechatIMG39.png" class><img src="/2020/06/09/NODEMCU%E6%90%AD%E5%BB%BAArduinoIDE%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/WechatIMG40.png" class><h2 id="当NODEMCU的蓝灯开始闪烁时,证明驱动程序已经成功安装"><a href="#当NODEMCU的蓝灯开始闪烁时,证明驱动程序已经成功安装" class="headerlink" title="当NODEMCU的蓝灯开始闪烁时,证明驱动程序已经成功安装"></a>当NODEMCU的蓝灯开始闪烁时,证明驱动程序已经成功安装</h2><img src="/2020/06/09/NODEMCU%E6%90%AD%E5%BB%BAArduinoIDE%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/WechatIMG41.jpeg" class>]]></content>
<summary type="html">
<h1 id="NODEMCU驱动安装"><a href="#NODEMCU驱动安装" class="headerlink" title="NODEMCU驱动安装"></a>NODEMCU驱动安装</h1><h2 id="工具"><a href="#工具" class="headerlink" title="工具"></a>工具</h2><p>使用windows系统<br>下载Arduino IDE,我直接从官网下载的,这里是<a href="https://www.arduino.cc/en/Main/Software" target="_blank" rel="noopener">传送门</a></p>
</summary>
<category term="嵌入式" scheme="http://yoursite.com/categories/%E5%B5%8C%E5%85%A5%E5%BC%8F/"/>
<category term="Esp8266" scheme="http://yoursite.com/categories/%E5%B5%8C%E5%85%A5%E5%BC%8F/Esp8266/"/>
<category term="物联网" scheme="http://yoursite.com/tags/%E7%89%A9%E8%81%94%E7%BD%91/"/>
</entry>
<entry>
<title>NODEMCU驱动安装</title>
<link href="http://yoursite.com/2020/06/09/NODEMCU%E9%A9%B1%E5%8A%A8%E5%AE%89%E8%A3%85/"/>
<id>http://yoursite.com/2020/06/09/NODEMCU%E9%A9%B1%E5%8A%A8%E5%AE%89%E8%A3%85/</id>
<published>2020-06-09T23:30:29.592Z</published>
<updated>2020-06-10T00:57:53.647Z</updated>
<content type="html"><![CDATA[<h1 id="NODEMCU驱动安装"><a href="#NODEMCU驱动安装" class="headerlink" title="NODEMCU驱动安装"></a>NODEMCU驱动安装</h1><h2 id="工具"><a href="#工具" class="headerlink" title="工具"></a>工具</h2><p>使用windows系统<br>NodeMCU驱动,有需要的朋友可以<a href="https://pan.baidu.com/s/12ggA07vlViNCtL9nK0fAZg" target="_blank" rel="noopener">点击这里</a> 提取码: b63t </p><h2 id="Step1-下载驱动"><a href="#Step1-下载驱动" class="headerlink" title="Step1 下载驱动"></a>Step1 下载驱动</h2><p>下载并打开驱动包,可以看到包中含有如下文件,我的电脑是64位的,所以我们选择x64.exe驱动。</p><img src="/2020/06/09/NODEMCU%E9%A9%B1%E5%8A%A8%E5%AE%89%E8%A3%85/WechatIMG20.png" class title="驱动包"><a id="more"></a><h2 id="Step2-打开驱动程序"><a href="#Step2-打开驱动程序" class="headerlink" title="Step2 打开驱动程序"></a>Step2 打开驱动程序</h2><p>点击next</p><img src="/2020/06/09/NODEMCU%E9%A9%B1%E5%8A%A8%E5%AE%89%E8%A3%85/WechatIMG22.png" class title="驱动程序"><p>选择accept,然后点击next</p><img src="/2020/06/09/NODEMCU%E9%A9%B1%E5%8A%A8%E5%AE%89%E8%A3%85/WechatIMG23.png" class><h2 id="Step3-等待安装,安装成功后,Finish即可"><a href="#Step3-等待安装,安装成功后,Finish即可" class="headerlink" title="Step3 等待安装,安装成功后,Finish即可"></a>Step3 等待安装,安装成功后,Finish即可</h2><img src="/2020/06/09/NODEMCU%E9%A9%B1%E5%8A%A8%E5%AE%89%E8%A3%85/WechatIMG24.png" class><h2 id="Step4-将NodeMCU与电脑连接,并查看端口号"><a href="#Step4-将NodeMCU与电脑连接,并查看端口号" class="headerlink" title="Step4 将NodeMCU与电脑连接,并查看端口号"></a>Step4 将NodeMCU与电脑连接,并查看端口号</h2><p>这里直接放图了</p><img src="/2020/06/09/NODEMCU%E9%A9%B1%E5%8A%A8%E5%AE%89%E8%A3%85/WechatIMG18.png" class>]]></content>
<summary type="html">
<h1 id="NODEMCU驱动安装"><a href="#NODEMCU驱动安装" class="headerlink" title="NODEMCU驱动安装"></a>NODEMCU驱动安装</h1><h2 id="工具"><a href="#工具" class="headerlink" title="工具"></a>工具</h2><p>使用windows系统<br>NodeMCU驱动,有需要的朋友可以<a href="https://pan.baidu.com/s/12ggA07vlViNCtL9nK0fAZg" target="_blank" rel="noopener">点击这里</a> 提取码: b63t </p>
<h2 id="Step1-下载驱动"><a href="#Step1-下载驱动" class="headerlink" title="Step1 下载驱动"></a>Step1 下载驱动</h2><p>下载并打开驱动包,可以看到包中含有如下文件,我的电脑是64位的,所以我们选择x64.exe驱动。</p>
<img src="/2020/06/09/NODEMCU%E9%A9%B1%E5%8A%A8%E5%AE%89%E8%A3%85/WechatIMG20.png" class title="驱动包">
</summary>
<category term="嵌入式" scheme="http://yoursite.com/categories/%E5%B5%8C%E5%85%A5%E5%BC%8F/"/>
<category term="Esp8266" scheme="http://yoursite.com/categories/%E5%B5%8C%E5%85%A5%E5%BC%8F/Esp8266/"/>
<category term="物联网" scheme="http://yoursite.com/tags/%E7%89%A9%E8%81%94%E7%BD%91/"/>
</entry>
<entry>
<title>June Leetcoding Challenge(6.9)</title>
<link href="http://yoursite.com/2020/06/09/LeetCodeJune9th/"/>
<id>http://yoursite.com/2020/06/09/LeetCodeJune9th/</id>
<published>2020-06-09T14:43:03.603Z</published>
<updated>2020-06-09T14:50:14.994Z</updated>
<content type="html"><![CDATA[<h1 id="LeetCode六月挑战-Is-Subsequence-LeetCode-392"><a href="#LeetCode六月挑战-Is-Subsequence-LeetCode-392" class="headerlink" title="LeetCode六月挑战 Is Subsequence LeetCode 392"></a>LeetCode六月挑战 Is Subsequence LeetCode 392</h1><p>Solution<br>Given a string s and a string t, check if s is subsequence of t.</p><p>A subsequence of a string is a new string which is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (ie, “ace” is a subsequence of “abcde” while “aec” is not).</p><p>Follow up:<br>If there are lots of incoming S, say S1, S2, … , Sk where k >= 1B, and you want to check one by one to see if T has its subsequence. In this scenario, how would you change your code?</p><p>Credits:<br>Special thanks to @pbrother for adding this problem and creating all test cases.</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">Example 1:</span><br><span class="line"></span><br><span class="line">Input: s = "abc", t = "ahbgdc"</span><br><span class="line">Output: true</span><br><span class="line">Example 2:</span><br><span class="line"></span><br><span class="line">Input: s = "axc", t = "ahbgdc"</span><br><span class="line">Output: false</span><br></pre></td></tr></table></figure><p>Constraints:</p><p>0 <= s.length <= 100<br>0 <= t.length <= 10^4<br>Both strings consists only of lowercase characters.</p> <a id="more"></a><h1 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h1><ul><li>Java做法: 采用两个指针,当匹配到相同的,s和t的指针移动到下一位,如果不匹配,将t的指针移动到下一位继续匹配。</li><li>python做法:将s转换为list q,如果q本身为空,返回true。如果q不为空,不断匹配,如果匹配到相同的字符,就把他从list q中删除。匹配到t的最后一位,如果q为空,返回true。</li></ul><h1 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h1><h2 id="java"><a href="#java" class="headerlink" title="java"></a>java</h2><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">boolean</span> <span class="title">isSubsequence</span><span class="params">(String s, String t)</span> </span>{</span><br><span class="line"> <span class="keyword">if</span>(s.length() ==<span class="number">0</span>&& t.length() !=<span class="number">0</span>)</span><br><span class="line"> <span class="keyword">return</span> <span class="keyword">true</span>;</span><br><span class="line"> <span class="keyword">char</span> c1[]= s.toCharArray();</span><br><span class="line"> <span class="keyword">char</span> c2[]= t.toCharArray();</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">int</span> i = <span class="number">0</span>,j=<span class="number">0</span>;</span><br><span class="line"> <span class="keyword">while</span>(i<c1.length && j<c2.length){</span><br><span class="line"> <span class="keyword">if</span>(c1[i] == c2[j]){</span><br><span class="line"> i++;</span><br><span class="line"> j++;</span><br><span class="line"> <span class="keyword">continue</span>;</span><br><span class="line"> }<span class="keyword">else</span>{</span><br><span class="line"> j++;</span><br><span class="line"> <span class="keyword">continue</span>;</span><br><span class="line"> } </span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> i==(c1.length);</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure><h2 id="python"><a href="#python" class="headerlink" title="python"></a>python</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">isSubsequence</span><span class="params">(self, s: str, t: str)</span> -> bool:</span></span><br><span class="line"> q = list(s);</span><br><span class="line"> <span class="keyword">for</span> c <span class="keyword">in</span> t:</span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> q:</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">True</span>;</span><br><span class="line"> <span class="keyword">if</span> c == q[<span class="number">0</span>]:</span><br><span class="line"> q.pop(<span class="number">0</span>);</span><br><span class="line"> <span class="keyword">return</span> <span class="keyword">not</span> q;</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<h1 id="LeetCode六月挑战-Is-Subsequence-LeetCode-392"><a href="#LeetCode六月挑战-Is-Subsequence-LeetCode-392" class="headerlink" title="LeetCode六月挑战 Is Subsequence LeetCode 392"></a>LeetCode六月挑战 Is Subsequence LeetCode 392</h1><p>Solution<br>Given a string s and a string t, check if s is subsequence of t.</p>
<p>A subsequence of a string is a new string which is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (ie, “ace” is a subsequence of “abcde” while “aec” is not).</p>
<p>Follow up:<br>If there are lots of incoming S, say S1, S2, … , Sk where k &gt;= 1B, and you want to check one by one to see if T has its subsequence. In this scenario, how would you change your code?</p>
<p>Credits:<br>Special thanks to @pbrother for adding this problem and creating all test cases.</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">Example 1:</span><br><span class="line"></span><br><span class="line">Input: s &#x3D; &quot;abc&quot;, t &#x3D; &quot;ahbgdc&quot;</span><br><span class="line">Output: true</span><br><span class="line">Example 2:</span><br><span class="line"></span><br><span class="line">Input: s &#x3D; &quot;axc&quot;, t &#x3D; &quot;ahbgdc&quot;</span><br><span class="line">Output: false</span><br></pre></td></tr></table></figure>
<p>Constraints:</p>
<p>0 &lt;= s.length &lt;= 100<br>0 &lt;= t.length &lt;= 10^4<br>Both strings consists only of lowercase characters.</p>
</summary>
<category term="LeetCode" scheme="http://yoursite.com/categories/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/categories/LeetCode/June-Leetcoding-Challenge/"/>
<category term="LeetCode" scheme="http://yoursite.com/tags/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/tags/June-Leetcoding-Challenge/"/>
</entry>
<entry>
<title>June Leetcoding Challenge(6.8)</title>
<link href="http://yoursite.com/2020/06/08/LeetCodeJune8th/"/>
<id>http://yoursite.com/2020/06/08/LeetCodeJune8th/</id>
<published>2020-06-08T11:46:41.548Z</published>
<updated>2020-06-08T11:49:29.987Z</updated>
<content type="html"><![CDATA[<h1 id="LeetCode六月挑战(6-8)Power-of-Two"><a href="#LeetCode六月挑战(6-8)Power-of-Two" class="headerlink" title="LeetCode六月挑战(6.8)Power of Two"></a>LeetCode六月挑战(6.8)Power of Two</h1><h1 id="Power-of-Two"><a href="#Power-of-Two" class="headerlink" title="Power of Two"></a>Power of Two</h1><p>Solution</p><p>Given an integer, write a function to determine if it is a power of two.</p><p><strong>Example 1:</strong></p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">Input: 1</span><br><span class="line">Output: true </span><br><span class="line">Explanation: 20 = 1</span><br></pre></td></tr></table></figure><p><strong>Example 2:</strong></p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">Input: 16</span><br><span class="line">Output: true</span><br><span class="line">Explanation: 24 = 16</span><br></pre></td></tr></table></figure><p><strong>Example 3:</strong></p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Input: 218</span><br><span class="line">Output: false</span><br></pre></td></tr></table></figure> <a id="more"></a><h1 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h1><img src="/2020/06/08/LeetCodeJune8th/silu.png" class><h1 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h1><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">boolean</span> <span class="title">isPowerOfTwo</span><span class="params">(<span class="keyword">int</span> n)</span> </span>{</span><br><span class="line"> <span class="comment">// if(n> 0 && (n & (n-1))==0)</span></span><br><span class="line"> <span class="comment">// return true;</span></span><br><span class="line"> <span class="comment">// return false;</span></span><br><span class="line"> <span class="keyword">return</span> n> <span class="number">0</span> && (n & (n-<span class="number">1</span>))==<span class="number">0</span>;</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<h1 id="LeetCode六月挑战(6-8)Power-of-Two"><a href="#LeetCode六月挑战(6-8)Power-of-Two" class="headerlink" title="LeetCode六月挑战(6.8)Power of Two"></a>LeetCode六月挑战(6.8)Power of Two</h1><h1 id="Power-of-Two"><a href="#Power-of-Two" class="headerlink" title="Power of Two"></a>Power of Two</h1><p>Solution</p>
<p>Given an integer, write a function to determine if it is a power of two.</p>
<p><strong>Example 1:</strong></p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">Input: 1</span><br><span class="line">Output: true </span><br><span class="line">Explanation: 20 &#x3D; 1</span><br></pre></td></tr></table></figure>
<p><strong>Example 2:</strong></p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">Input: 16</span><br><span class="line">Output: true</span><br><span class="line">Explanation: 24 &#x3D; 16</span><br></pre></td></tr></table></figure>
<p><strong>Example 3:</strong></p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Input: 218</span><br><span class="line">Output: false</span><br></pre></td></tr></table></figure>
</summary>
<category term="LeetCode" scheme="http://yoursite.com/categories/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/categories/LeetCode/June-Leetcoding-Challenge/"/>
<category term="LeetCode" scheme="http://yoursite.com/tags/LeetCode/"/>
<category term="June Leetcoding Challenge" scheme="http://yoursite.com/tags/June-Leetcoding-Challenge/"/>
</entry>
<entry>
<title>计算机网络自顶向下方法Character1补充</title>
<link href="http://yoursite.com/2020/06/07/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E8%87%AA%E9%A1%B6%E5%90%91%E4%B8%8B%E6%96%B9%E6%B3%95Character1%E8%A1%A5%E5%85%85/"/>
<id>http://yoursite.com/2020/06/07/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E8%87%AA%E9%A1%B6%E5%90%91%E4%B8%8B%E6%96%B9%E6%B3%95Character1%E8%A1%A5%E5%85%85/</id>
<published>2020-06-07T23:41:20.427Z</published>
<updated>2020-06-07T23:47:17.304Z</updated>
<content type="html"><![CDATA[<h1 id="计算机网络自顶向下方法Character1补充"><a href="#计算机网络自顶向下方法Character1补充" class="headerlink" title="计算机网络自顶向下方法Character1补充"></a>计算机网络自顶向下方法Character1补充</h1><h1 id="本文概述:"><a href="#本文概述:" class="headerlink" title="本文概述:"></a>本文概述:</h1><p>本文主要补充计算机网络自顶向下方法第一章节的知识点。<br>学习书籍为:计算机网络自顶向下方法<br>学习视频为:国立清华大学黄能富教授讲解的计算机网络自顶向下方法,需要的可以点击 <a href="http://ocw.nthu.edu.tw/ocw/index.php?page=mobile&type=teacher&cid=13" target="_blank" rel="noopener">这里</a></p><a id="more"></a><ul><li><p>端系统通过通信链路和分组交换机(packet switch)连接到一起。链路的传输速率以比特/秒度量(bit/s或bps)。</p></li><li><p>当一台端系统要向另一台端系统发送数据时,发送端系统将数据分段,并为每段加上首部字节。由此形成的信息包用计算机网络的术语来说称为分组( packet)。这些分组通过网络发送到目的端系统,在那里被装配成初始数据。</p></li><li><p>分组交换机:路由器(router)和链路交换机(link-layer switch)。链路层交换机通常用于接入网中,而路由器通常用于网络核心中。从发送端系统到接收端系统给,一个分组所经历的一系列通信链路和分组交换机称为该网络的路径。</p></li><li><p>端系统通过ISP接入因特网,每个ISP是一个由多个分组交换机和多段通信链路组成的网络。各ISP为端系统提供了各种不同类型的网络接入。ISP也为内容提供者提供因特网接入服务,将Web站点直接接入因特网,因特网就是将端系统彼此互联,因此ISP也必须互联。</p></li><li><p>端系统,分组交换机和其他因特网部件都要运行一系列协议,这些协议控制因特网中信息的接受和发送。</p></li><li><p>IP协议定义了在路由器和端系统之间发送和接受的分组格式。</p></li><li><p>分组交换</p><ul><li>存储转发传输:是指在交换机能后开始输出链路传输分组的第一个比特之前,必须接受到整个分组。</li></ul></li><li><p>电路交换频分复用FDM或时分复用TDM:</p><ul><li>FDM: 链路的频谱由跨越链路创建的所有链接所共享,每条连接专用一个频段,4Hz的带宽</li><li>TDM: 时间被划分为固定区间的帧,并且每帧又被划分为固定数量的时隙</li></ul></li><li><p>分组交换网中的时延概述:</p><ul><li><p>分类:结点处理时延(nodal processing delay),排队时延(queuing delay) ,传输时延(transmission delay)和传播时延(propagation on delay),时延总体累加起来是结点总时延</p></li><li><p>处理时延:检查分组首部和决定将该分组导向何处所需要的时间是处理时延的一部分。</p></li><li><p>排队时延:在队列中,当分组在链路上等待传输时,他经受排队时延。一个特定分组的排队时延长度取决于先期到达的正在排队等待像链路传输的分组数量</p></li><li><p>传输时延:假定分组以先到先服务方式传输,这在分组交换网中是常见的方式,仅当所有已经到达的分组被传输后,才能传输刚到达的分组</p></li><li><p>传播时延:一旦一个比特被推向链路,该比特需要向路由器B传播。从该链路的起点到路由器B传播所需要的时间时传播时延</p></li><li><p>排队时延和丢包:取决于流量到达改队列的速率,链路的传输速率和到达流量性质,即流量时周期性到达还是以突发形式到达.</p><p>由于排队容量是有限的,随着流量强度接近1,排队时延并不实际趋向无穷大,相反,到达的分组发现一个满的队列,由于没有地方存储这个分组,路由器将丢弃该分组,即丢包</p></li></ul></li><li><p>吞吐量: 从主机A到主机B跨越计算机网络传送一个大文件,在任何时间瞬间的瞬时吞吐量是主机B接受到该文件的速率。 如果该文件由F比特组成,主机B接受到所有F比特用去T秒,则文件传送的平均吞吐量是F/T bps。</p></li><li><p>协议分层,各层的所有协议被称为协议栈。由五个层次构成:物理层,链路层,网络层,运输层,应用层。自顶向下方法:</p><ol><li><p>应用层:</p><p>应用层是网络应用程序及它的应用层协议存留的地方。借助于特定的应用层协议即域名系统(DNS)完成。应用层协议分布在分布在多个端系统上,一个端系统中的应用程序使用协议与另一个端系统中的应用程序交换信息的分组。位于应用层的信息分组称为报文。</p></li><li><p>运输层:</p><p>因特网的运输层在应用程序端点之间传送应用层保温。TCP向它的应用程序提供了面向连接的服务。这种服务包括了应用层报文目的地的确保传递和流量控制。TCP将长报文转换为短报文,并提供拥塞控制机制,因此当网络拥塞时,源抑制其传输速率。UDP协议向它的应用程序提供无连接服务。</p></li><li><p>网络层:</p><p>负责将数据包的网络层分组从一台主机移动到另一台主机。在一台源主机中的因特网运输层协议向网络层递交运输层报文段和目的地址。IP协议定义了在数据包中的各个字段以及端系统和路由器如何作用与这些资源。仅有一个协议,所有具有网络层的因特网组件必须运行IP协议。</p></li><li><p>链路层: </p><p>为了将分组从一个结点(主机或路由器)移动到路径上的下一个结点,网络层必须依靠该链路层的服务。特别是在每个结点,网络层将数据报下传给链路层,链路层沿着路径将数据报传递给下一个结点。由链路层提供的服务取决于应用于该链路的特定链路协议</p></li><li><p>物理层:将帧中的一个一个比特从一个结点移动到下一个结点</p></li></ol></li><li><p>OSI模型:应用层,表示层,会话层,运输层,网络层,链路层,物理层</p><ol><li>应用层(数据):确定进程之间通信的性质以满足用户需要以及提供网络与用户应用</li><li>表示层(数据):主要解决拥护信息的语法表示问题,如加密解密</li><li>会话层(数据):提供包括访问验证和会话管理在内的建立和维护应用之间通信的机<br>制,如服务器验证用户登录便是由会话层完成的</li><li>传输 层(段):实现网络不同主机上用户进程之间的数据通信,可靠<br>与不可靠的传输,传输层的错误检测,流量控制等</li><li>网络层(包):提供逻辑地址( IP )、选路,数据从源端到目的端的<br>传输</li><li>数据链路层 (帧):将上层数据封装成帧,用 MAC 地址访问媒介,错误检测与修正</li><li>物理层(比特流):设备之间比特流的传输,物理接口,电气特性等</li></ol></li></ul>]]></content>
<summary type="html">
<h1 id="计算机网络自顶向下方法Character1补充"><a href="#计算机网络自顶向下方法Character1补充" class="headerlink" title="计算机网络自顶向下方法Character1补充"></a>计算机网络自顶向下方法Character1补充</h1><h1 id="本文概述:"><a href="#本文概述:" class="headerlink" title="本文概述:"></a>本文概述:</h1><p>本文主要补充计算机网络自顶向下方法第一章节的知识点。<br>学习书籍为:计算机网络自顶向下方法<br>学习视频为:国立清华大学黄能富教授讲解的计算机网络自顶向下方法,需要的可以点击 <a href="http://ocw.nthu.edu.tw/ocw/index.php?page=mobile&type=teacher&cid=13" target="_blank" rel="noopener">这里</a></p>
</summary>
<category term="计算机网络自顶向下方法学习笔记" scheme="http://yoursite.com/categories/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E8%87%AA%E9%A1%B6%E5%90%91%E4%B8%8B%E6%96%B9%E6%B3%95%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"/>
<category term="计算机网络自顶向下方法" scheme="http://yoursite.com/tags/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E8%87%AA%E9%A1%B6%E5%90%91%E4%B8%8B%E6%96%B9%E6%B3%95/"/>
</entry>
</feed>