File tree Expand file tree Collapse file tree 7 files changed +64
-11
lines changed
src/main/java/com/diguage/algo/leetcode Expand file tree Collapse file tree 7 files changed +64
-11
lines changed Original file line number Diff line number Diff line change @@ -5233,14 +5233,14 @@ TIP: **公众号的微信号是: `jikerizhi`**。__因为众所周知的原因
5233
5233
//|{doc_base_url}/0743-network-delay-time.adoc[题解]
5234
5234
//|Medium
5235
5235
//|
5236
- //
5237
- // |{counter:codes}
5238
- // |{leetcode_base_url}/find-smallest-letter-greater-than-target/[744. Find Smallest Letter Greater Than Target^]
5239
- // |{source_base_url}/_0744_FindSmallestLetterGreaterThanTarget.java[Java]
5240
- // |{doc_base_url}/0744-find-smallest-letter-greater-than-target.adoc[题解]
5241
- // |Easy
5242
- // |
5243
- //
5236
+
5237
+ |{counter:codes}
5238
+ |{leetcode_base_url}/find-smallest-letter-greater-than-target/[744. Find Smallest Letter Greater Than Target^]
5239
+ |{source_base_url}/_0744_FindSmallestLetterGreaterThanTarget.java[Java]
5240
+ |{doc_base_url}/0744-find-smallest-letter-greater-than-target.adoc[题解]
5241
+ |Easy
5242
+ |
5243
+
5244
5244
//|{counter:codes}
5245
5245
//|{leetcode_base_url}/prefix-and-suffix-search/[745. Prefix and Suffix Search^]
5246
5246
//|{source_base_url}/_0745_PrefixAndSuffixSearch.java[Java]
Original file line number Diff line number Diff line change 10
10
. 前缀和
11
11
.. xref:0523-continuous-subarray-sum.adoc[523. Continuous Subarray Sum]
12
12
. 树的 Morris 遍历
13
- .. TODO: 基于 Morris 遍历的中序排列已经掌握,前序,尤其是后续还需要加强。
13
+ .. 基于 Morris 遍历的中序排列已经掌握,前序,尤其是后续还需要加强。
14
+ . 二分搜索怎样可以确定地取左右端点?
14
15
15
16
image::images/quick-sort-01.gif[{image_attr}]
16
17
Original file line number Diff line number Diff line change 5
5
6
6
对于一组满足上升排列的数集来说,这种模式的步骤是这样的:
7
7
8
- . 首先,算出左右端点的中点。最简单的方式是这样的:middle = (start + end) / 2。但这种计算方式有不小的概率会出现整数越界。因此一般都推荐另外这种写法:middle = start + (end — start) / 2
8
+ . 首先,算出左右端点的中点。最简单的方式是这样的: latexmath:[ middle = (start + end) / 2] 。但这种计算方式有不小的概率会出现整数越界。因此一般都推荐另外这种写法: latexmath:[ middle = start + (end - start) / 2].
9
9
. 如果要找的目标改好和中点所在的数值相等,我们返回中点的下标就行
10
10
. 如果目标不等的话:我们就有两种移动方式了如果目标比中点在的值小(key < arr[middle]):将下一步搜索空间放到左边(end = middle - 1)
11
11
. 如果比中点的值大,则继续在右边搜索,丢弃左边:left = middle + 1
12
12
13
+ == 疑问点
14
+
15
+ . 二分搜索怎样可以确定地取左右端点?
16
+
13
17
== 经典题目
14
18
15
19
. xref:0033-search-in-rotated-sorted-array.adoc[33. Search in Rotated Sorted Array]
Original file line number Diff line number Diff line change @@ -56,8 +56,24 @@ target = "k"
56
56
57
57
58
58
[[src-0744]]
59
+ [tabs]
60
+ ====
61
+ 一刷::
62
+ +
63
+ --
59
64
[{java_src_attr}]
60
65
----
61
66
include::{sourcedir}/_0744_FindSmallestLetterGreaterThanTarget.java[tag=answer]
62
67
----
68
+ --
69
+
70
+ // 二刷::
71
+ // +
72
+ // --
73
+ // [{java_src_attr}]
74
+ // ----
75
+ // include::{sourcedir}/_0744_FindSmallestLetterGreaterThanTarget_2.java[tag=answer]
76
+ // ----
77
+ // --
78
+ ====
63
79
Original file line number Diff line number Diff line change @@ -1562,7 +1562,7 @@ include::0739-daily-temperatures.adoc[leveloffset=+1]
1562
1562
1563
1563
// include::0743-network-delay-time.adoc[leveloffset=+1]
1564
1564
1565
- // include::0744-find-smallest-letter-greater-than-target.adoc[leveloffset=+1]
1565
+ include::0744-find-smallest-letter-greater-than-target.adoc[leveloffset=+1]
1566
1566
1567
1567
// include::0745-prefix-and-suffix-search.adoc[leveloffset=+1]
1568
1568
Original file line number Diff line number Diff line change 404
404
|{doc_base_url} /0870-advantage-shuffle.adoc[题解]
405
405
|双指针+优先队列(排序)
406
406
407
+ |{counter:codes}
408
+ |{leetcode_base_url} /find-smallest-letter-greater-than-target/[744. Find Smallest Letter Greater Than Target^]
409
+ |{doc_base_url} /0744-find-smallest-letter-greater-than-target.adoc[题解]
410
+ |二分查找取左右端点是一个怎样的套路?
411
+
407
412
|===
408
413
409
414
截止目前,本轮练习一共完成 {codes} 道题。
Original file line number Diff line number Diff line change
1
+ package com .diguage .algo .leetcode ;
2
+
3
+ public class _0744_FindSmallestLetterGreaterThanTarget {
4
+ // tag::answer[]
5
+
6
+ /**
7
+ * @author D瓜哥 · https://www.diguage.com
8
+ * @since 2024-08-23 17:04:36
9
+ */
10
+ public char nextGreatestLetter (char [] letters , char target ) {
11
+ int length = letters .length ;
12
+ if (target >= letters [length - 1 ]) {
13
+ return letters [0 ];
14
+ }
15
+ int left = 0 , right = length - 1 ;
16
+ while (left < right ) {
17
+ int mid = left + (right - left ) / 2 ;
18
+ if (target < letters [mid ]) {
19
+ right = mid ;
20
+ } else {
21
+ left = mid + 1 ;
22
+ }
23
+ }
24
+ return letters [left ];
25
+ }
26
+ // end::answer[]
27
+ }
You can’t perform that action at this time.
0 commit comments