Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 364f1f8

Browse files
authored
Merge pull request #285 from ben1009/tool-chain
chore: upgrade toolchain to nightly-2025-02-01
2 parents 5801b9f + f69122e commit 364f1f8

23 files changed

+144
-131
lines changed

.github/workflows/check.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ concurrency:
1212

1313
env:
1414
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
15-
RUST_TOOLCHAIN: nightly-2024-12-01
15+
RUST_TOOLCHAIN: nightly-2025-02-01
1616

1717
name: Check
1818
jobs:

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ concurrency:
1212

1313
env:
1414
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
15-
RUST_TOOLCHAIN: nightly-2024-12-01
15+
RUST_TOOLCHAIN: nightly-2025-02-01
1616

1717
name: Test
1818
jobs:

rust-toolchain

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
[toolchain]
2-
channel = "nightly-2024-12-01"
2+
channel = "nightly-2025-02-01"

src/problem/p0001_two_sum.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ pub struct Solution {}
4343
impl Solution {
4444
pub fn two_sum(nums: Vec<i32>, target: i32) -> Vec<i32> {
4545
let mut map = HashMap::new();
46-
for (i, item) in nums.iter().enumerate() {
47-
if map.contains_key(&(target - item)) {
48-
return vec![map[&(target - item)], i as i32];
46+
for (i, &n) in nums.iter().enumerate() {
47+
if let Some(&j) = map.get(&(target - n)) {
48+
return vec![j, i as i32];
4949
}
50-
map.insert(item, i as i32);
50+
map.insert(n, i as i32);
5151
}
5252

5353
vec![]

src/problem/p0002_add_two_numbers.rs

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -64,31 +64,29 @@ impl Solution {
6464
return l1;
6565
}
6666

67+
let mut root_pointer = ListNode::new(0);
68+
let mut current = &mut root_pointer;
69+
let mut carry = 0;
6770
let mut l1 = l1;
6871
let mut l2 = l2;
69-
let mut ret = ListNode::new(0);
70-
let mut current = &mut ret;
71-
let mut carry = 0;
72-
7372
while l1.is_some() || l2.is_some() || carry != 0 {
7473
let mut v1 = 0;
7574
let mut v2 = 0;
76-
if let Some(l) = l1 {
77-
v1 = l.val;
78-
l1 = l.next;
75+
if let Some(mut n1) = l1 {
76+
v1 = n1.val;
77+
l1 = n1.next.take();
7978
}
80-
if let Some(l) = l2 {
81-
v2 = l.val;
82-
l2 = l.next;
79+
if let Some(mut n2) = l2 {
80+
v2 = n2.val;
81+
l2 = n2.next.take();
8382
}
84-
let num = v1 + v2 + carry;
85-
carry = num / 10;
86-
let n = num % 10;
87-
current.next = Some(Box::new(ListNode::new(n)));
83+
let v = (v1 + v2 + carry) % 10;
84+
carry = (v1 + v2 + carry) / 10;
85+
current.next = Some(Box::new(ListNode::new(v)));
8886
current = current.next.as_mut().unwrap();
8987
}
9088

91-
ret.next
89+
root_pointer.next
9290
}
9391
}
9492

src/problem/p0003_longest_substring_without_repeating_characters.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::collections::{HashMap, hash_map::Entry};
1+
use std::collections::HashMap;
22

33
/// [3] Longest Substring Without Repeating Characters
44
///
@@ -41,20 +41,20 @@ impl Solution {
4141
return s.len() as i32;
4242
}
4343

44+
let mut map = HashMap::new();
4445
let mut ret = 0;
4546
let mut pre = 0;
46-
let mut dic = HashMap::new();
47-
for (i, b) in s.as_bytes().iter().enumerate() {
48-
match dic.entry(b) {
49-
Entry::Occupied(o) => {
50-
if pre <= *o.get() {
47+
for (i, c) in s.bytes().enumerate() {
48+
match map.entry(c) {
49+
std::collections::hash_map::Entry::Occupied(o) => {
50+
if o.get() >= &pre {
5151
pre = o.get() + 1;
5252
}
5353
}
54-
Entry::Vacant(_) => {}
54+
std::collections::hash_map::Entry::Vacant(_) => {}
5555
}
56-
ret = std::cmp::max(ret, i - pre + 1);
57-
dic.insert(b, i);
56+
ret = ret.max(i - pre + 1);
57+
map.insert(c, i);
5858
}
5959

6060
ret as i32

src/problem/p0005_longest_palindromic_substring.rs

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,37 +27,33 @@ pub struct Solution {}
2727

2828
impl Solution {
2929
pub fn longest_palindrome(s: String) -> String {
30-
if s.len() < 2 {
30+
if s.len() == 1 {
3131
return s;
3232
}
3333

34-
let a = s.as_bytes();
35-
let mut ret = &a[0..1];
36-
for i in 0..a.len() - 1 {
37-
let s1 = Self::pali(a, i as i32, i as i32 + 1);
38-
let s2 = Self::pali(a, i as i32, i as i32);
39-
if ret.len() < s1.len() {
34+
let s = s.as_bytes();
35+
let mut ret: &[u8] = &[];
36+
for i in 0..s.len() - 1 {
37+
let s1 = Solution::pali(s, i as i32, i);
38+
let s2 = Solution::pali(s, i as i32, i + 1);
39+
if s1.len() > ret.len() {
4040
ret = s1;
4141
}
42-
if ret.len() < s2.len() {
42+
if s2.len() > ret.len() {
4343
ret = s2;
4444
}
4545
}
4646

4747
String::from_utf8_lossy(ret).to_string()
4848
}
4949

50-
fn pali(a: &[u8], mut i: i32, mut j: i32) -> &[u8] {
51-
if a[i as usize] != a[j as usize] {
52-
return &[];
50+
fn pali(s: &[u8], mut l: i32, mut r: usize) -> &[u8] {
51+
while l >= 0 && r < s.len() && s[l as usize] == s[r] {
52+
l -= 1;
53+
r += 1;
5354
}
5455

55-
while i >= 0 && j < a.len() as i32 && a[i as usize] == a[j as usize] {
56-
i -= 1;
57-
j += 1;
58-
}
59-
60-
&a[(i + 1) as usize..j as usize]
56+
&s[(l + 1) as usize..r]
6157
}
6258
}
6359

src/problem/p0007_reverse_integer.rs

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,23 +35,17 @@ impl Solution {
3535
return x;
3636
}
3737

38-
let mut sign: i64 = 1;
39-
let mut x = x as i64;
40-
if x < 0 {
41-
sign = -1;
42-
}
43-
x *= sign;
44-
45-
let mut ret = 0;
38+
let mut ret: i64 = 0;
39+
let mut x = x;
4640
while x != 0 {
47-
ret = ret * 10 + x % 10;
48-
if ret * sign > i32::MAX as i64 || ret * sign < i32::MIN as i64 {
41+
ret = x as i64 % 10 + ret * 10;
42+
if ret > i32::MAX as i64 || ret < i32::MIN as i64 {
4943
return 0;
5044
}
5145
x /= 10;
5246
}
5347

54-
(ret * sign) as i32
48+
ret as i32
5549
}
5650
}
5751

src/problem/p0011_container_with_most_water.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
use std::cmp::{max, min};
2-
31
/// [11] Container With Most Water
42
///
53
/// You are given an integer array height of length n. There are n vertical lines drawn such that
@@ -37,14 +35,17 @@ impl Solution {
3735
let mut ret = 0;
3836
let mut i = 0;
3937
let mut j = height.len() - 1;
40-
while i < j {
41-
let t = min(height[i], height[j]) * (j - i) as i32;
42-
ret = max(t, ret);
38+
let mut t;
39+
while i != j {
40+
t = (j - i) as i32;
4341
if height[i] < height[j] {
42+
t *= height[i];
4443
i += 1;
4544
} else {
45+
t *= height[j];
4646
j -= 1;
4747
}
48+
ret = ret.max(t);
4849
}
4950

5051
ret

src/problem/p0017_letter_combinations_of_a_phone_number.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,14 @@ mod tests {
8484

8585
#[test]
8686
fn test_17() {
87-
assert_eq!(Solution::letter_combinations("23".to_owned()), vec![
88-
"ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"
89-
]);
90-
assert_eq!(Solution::letter_combinations("2".to_owned()), vec![
91-
"a", "b", "c"
92-
]);
87+
assert_eq!(
88+
Solution::letter_combinations("23".to_owned()),
89+
vec!["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]
90+
);
91+
assert_eq!(
92+
Solution::letter_combinations("2".to_owned()),
93+
vec!["a", "b", "c"]
94+
);
9395
assert_eq!(
9496
Solution::letter_combinations("".to_owned()),
9597
Vec::<String>::new()

src/problem/p0022_generate_parentheses.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,10 @@ mod tests {
5454

5555
#[test]
5656
fn test_22() {
57-
assert_eq!(Solution::generate_parenthesis(3), vec![
58-
"((()))", "(()())", "(())()", "()(())", "()()()"
59-
]);
57+
assert_eq!(
58+
Solution::generate_parenthesis(3),
59+
vec!["((()))", "(()())", "(())()", "()(())", "()()()"]
60+
);
6061
assert_eq!(Solution::generate_parenthesis(1), vec!["()"]);
6162
assert_eq!(Solution::generate_parenthesis(2), vec!["(())", "()()"]);
6263
}

src/problem/p0056_merge_intervals.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,9 @@ mod tests {
6565
Solution::merge(vec![vec![2, 6], vec![1, 3], vec![8, 10], vec![15, 18]]),
6666
vec![vec![1, 6], vec![8, 10], vec![15, 18]]
6767
);
68-
assert_eq!(Solution::merge(vec![vec![1, 4], vec![4, 5]]), vec![vec![
69-
1, 5
70-
]]);
68+
assert_eq!(
69+
Solution::merge(vec![vec![1, 4], vec![4, 5]]),
70+
vec![vec![1, 5]]
71+
);
7172
}
7273
}

src/problem/p0094_binary_tree_inorder_traversal.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,10 @@ mod tests {
8888

8989
#[test]
9090
fn test_94() {
91-
assert_eq!(Solution::inorder_traversal(tree![1, null, 2, 3]), vec![
92-
1, 3, 2
93-
]);
91+
assert_eq!(
92+
Solution::inorder_traversal(tree![1, null, 2, 3]),
93+
vec![1, 3, 2]
94+
);
9495
assert_eq!(Solution::inorder_traversal(tree![1]), vec![1]);
9596
assert_eq!(Solution::inorder_traversal(tree![]), vec![]);
9697
}

src/problem/p0095_unique_binary_search_trees_ii.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,15 @@ mod tests {
8080

8181
#[test]
8282
fn test_95() {
83-
assert_eq!(Solution::generate_trees(3), vec![
84-
tree![1, null, 2, null, 3],
85-
tree![1, null, 3, 2],
86-
tree![2, 1, 3],
87-
tree![3, 1, null, null, 2],
88-
tree![3, 2, null, 1]
89-
]);
83+
assert_eq!(
84+
Solution::generate_trees(3),
85+
vec![
86+
tree![1, null, 2, null, 3],
87+
tree![1, null, 3, 2],
88+
tree![2, 1, 3],
89+
tree![3, 1, null, null, 2],
90+
tree![3, 2, null, 1]
91+
]
92+
);
9093
}
9194
}

src/problem/p0114_flatten_binary_tree_to_linked_list.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,9 @@ mod tests {
105105
fn test_114() {
106106
let tree_node = tree!(1, 2, 5, 3, 4, null, 6);
107107
Solution::flatten(&tree_node);
108-
assert_eq!(tree_node, tree![
109-
1, null, 2, null, 3, null, 4, null, 5, null, 6
110-
]);
108+
assert_eq!(
109+
tree_node,
110+
tree![1, null, 2, null, 3, null, 4, null, 5, null, 6]
111+
);
111112
}
112113
}

src/problem/p0144_binary_tree_preorder_traversal.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,10 @@ mod tests {
8989

9090
#[test]
9191
fn test_144() {
92-
assert_eq!(Solution::preorder_traversal(tree![1, null, 2, 3]), vec![
93-
1, 2, 3
94-
]);
92+
assert_eq!(
93+
Solution::preorder_traversal(tree![1, null, 2, 3]),
94+
vec![1, 2, 3]
95+
);
9596
assert_eq!(Solution::preorder_traversal(tree![1]), vec![1]);
9697
assert_eq!(Solution::preorder_traversal(tree![]), vec![]);
9798
}

src/problem/p0145_binary_tree_postorder_traversal.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,10 @@ mod tests {
9898

9999
#[test]
100100
fn test_145() {
101-
assert_eq!(Solution::postorder_traversal(tree![1, null, 2, 3]), vec![
102-
3, 2, 1
103-
]);
101+
assert_eq!(
102+
Solution::postorder_traversal(tree![1, null, 2, 3]),
103+
vec![3, 2, 1]
104+
);
104105
assert_eq!(Solution::postorder_traversal(tree![1]), vec![1]);
105106
assert_eq!(Solution::postorder_traversal(tree![1, 2]), vec![2, 1]);
106107
}

src/problem/p0503_next_greater_element_ii.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,13 @@ mod tests {
4848

4949
#[test]
5050
fn test_0503() {
51-
assert_eq!(Solution::next_greater_elements(vec![1, 2, 1]), vec![
52-
2, -1, 2
53-
]);
54-
assert_eq!(Solution::next_greater_elements(vec![1, 2, 3, 4, 3]), vec![
55-
2, 3, 4, -1, 4
56-
]);
51+
assert_eq!(
52+
Solution::next_greater_elements(vec![1, 2, 1]),
53+
vec![2, -1, 2]
54+
);
55+
assert_eq!(
56+
Solution::next_greater_elements(vec![1, 2, 3, 4, 3]),
57+
vec![2, 3, 4, -1, 4]
58+
);
5759
}
5860
}

src/problem/p0739_daily_temperatures.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,13 @@ mod tests {
5959
Solution::daily_temperatures(vec![73, 74, 75, 71, 69, 72, 76, 73]),
6060
vec![1, 1, 4, 2, 1, 1, 0, 0]
6161
);
62-
assert_eq!(Solution::daily_temperatures(vec![30, 40, 50, 60]), vec![
63-
1, 1, 1, 0
64-
]);
65-
assert_eq!(Solution::daily_temperatures(vec![30, 60, 90]), vec![
66-
1, 1, 0
67-
]);
62+
assert_eq!(
63+
Solution::daily_temperatures(vec![30, 40, 50, 60]),
64+
vec![1, 1, 1, 0]
65+
);
66+
assert_eq!(
67+
Solution::daily_temperatures(vec![30, 60, 90]),
68+
vec![1, 1, 0]
69+
);
6870
}
6971
}

0 commit comments

Comments
 (0)