Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit bc89d49

Browse files
committed
q46
1 parent dde304d commit bc89d49

File tree

7 files changed

+196
-55
lines changed

7 files changed

+196
-55
lines changed

‎src/backtrace/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
mod q22;
1+
mod q22;
2+
mod q46;

‎src/backtrace/q22.rs

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -35,26 +35,6 @@ impl Solution {
3535
ret
3636
}
3737

38-
39-
fn check_legal(s: &str) -> bool {
40-
let mut clause = 0;
41-
for v in s.chars() {
42-
if v == '(' {
43-
clause += 1;
44-
} else {
45-
clause -= 1;
46-
}
47-
48-
if clause < 0 {
49-
return false;
50-
}
51-
};
52-
53-
println!("{:?}", clause==0);
54-
clause == 0
55-
}
56-
57-
5838
nest_function("(".to_owned(), 1, 0 ,n)
5939
}
6040

‎src/backtrace/q46.rs

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
2+
3+
4+
struct Solution ();
5+
impl Solution {
6+
pub fn permute(nums: Vec<i32>) -> Vec<Vec<i32>> {
7+
let mut ans: Vec<Vec<i32>> = vec![];
8+
let mut arr: Vec<i32> = vec![];
9+
Solution::backtrace(&nums, &mut arr, &mut ans);
10+
11+
12+
let mut ans = Solution::backtrace2(&nums, vec![]);
13+
return ans;
14+
}
15+
16+
17+
fn backtrace(nums: &Vec<i32>, arr: &mut Vec<i32>, ans: &mut Vec<Vec<i32>>) {
18+
19+
20+
21+
22+
if arr.len() == nums.len() {
23+
ans.push(arr.clone());
24+
} else {
25+
26+
for i in nums {
27+
if !arr.contains(i) {
28+
arr.push(*i);
29+
Solution::backtrace(nums, arr, ans);
30+
arr.pop();
31+
}
32+
}
33+
34+
35+
}
36+
}
37+
38+
fn backtrace2(nums: &Vec<i32>, arr: Vec<i32>) -> Vec<Vec<i32>> {
39+
let mut result = vec![];
40+
41+
if arr.len() == nums.len() {
42+
return vec![arr];
43+
}
44+
45+
for x in nums {
46+
if !arr.contains(x) {
47+
48+
let mut new_arr = arr.clone();
49+
new_arr.push(*x);
50+
result.append(&mut Solution::backtrace2(
51+
nums,
52+
new_arr
53+
));
54+
}
55+
}
56+
57+
result
58+
59+
}
60+
61+
62+
}
63+
64+
65+
66+
67+
#[cfg(test)]
68+
mod tests {
69+
use super::*;
70+
71+
#[test]fn test_ok() {
72+
73+
println!("{:?}", Solution::permute(vec![1,2,3]))
74+
75+
}
76+
}

‎src/dp/mod.rs

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,2 @@
11
mod q121;
22

3-
4-
struct Solution ();
5-
impl Solution {
6-
pub fn max_profit(prices: Vec<i32>) -> i32 {
7-
8-
let mut max = 0;
9-
let mut min_item = prices[0];
10-
11-
12-
for x in prices.into_iter().skip(1) {
13-
min_item = min_item.min(x);
14-
max = max.max(x - min_item);
15-
16-
17-
}
18-
19-
20-
max
21-
}
22-
}
23-
24-
25-
26-
#[cfg(test)]
27-
mod tests {
28-
use super::*;
29-
30-
#[test] fn is_ok() {
31-
32-
assert_eq!(Solution::max_profit(vec![7,1,5,3,6,4]), 5)
33-
34-
35-
}
36-
}

‎src/dp/q121.rs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
2+
struct Solution ();
3+
impl Solution {
4+
pub fn max_profit(prices: Vec<i32>) -> i32 {
5+
6+
let mut max = 0;
7+
let mut min_item = prices[0];
8+
9+
10+
for x in prices.into_iter().skip(1) {
11+
min_item = min_item.min(x);
12+
max = max.max(x - min_item);
13+
14+
15+
}
16+
17+
18+
max
19+
}
20+
}
21+
22+
23+
24+
#[cfg(test)]
25+
mod tests {
26+
use super::*;
27+
28+
#[test] fn is_ok() {
29+
30+
assert_eq!(Solution::max_profit(vec![7,1,5,3,6,4]), 5)
31+
32+
33+
}
34+
}

‎src/linklist/mod.rs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
2+
#[derive(Debug)]
3+
pub struct ListNode {
4+
pub val: i32,
5+
pub next: Option<Box<ListNode>>
6+
}
7+
8+
9+
impl ListNode {
10+
fn new(val: i32) -> ListNode {
11+
ListNode {
12+
val,
13+
next: None
14+
}
15+
}
16+
}
17+
18+
19+
20+
21+
#[macro_export]
22+
macro_rules! linklist {
23+
() => {
24+
None
25+
};
26+
($($e:expr), *) => {
27+
{
28+
let mut head = Box::new(ListNode::new(0));
29+
let mut ref_head = &mut head;
30+
31+
$(
32+
ref_head.next = Some(Box::new(ListNode::new($e)));
33+
ref_head = ref_head.next.as_mut().unwrap();
34+
)*
35+
36+
let _ = ref_head; // 避免 `unused_assignments`
37+
head.next
38+
}
39+
};
40+
}
41+
42+
mod q203;

‎src/linklist/q203.rs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
use super::*;
2+
3+
struct Solution();
4+
impl Solution {
5+
pub fn remove_elements(head: Option<Box<ListNode>>, val: i32) -> Option<Box<ListNode>> {
6+
let mut head = Some(Box::new(ListNode{
7+
val: val-1,
8+
next: head
9+
}));
10+
11+
let mut node = &mut head;
12+
13+
'outer:
14+
while let Some(ptr) = node {
15+
while let Some(ptr2) = &mut ptr.next {
16+
if ptr2.val == val {
17+
ptr.next = ptr2.next.take();
18+
} else {
19+
node = &mut ptr.next;
20+
continue 'outer;
21+
}
22+
}
23+
break;
24+
}
25+
26+
head.unwrap().next
27+
}
28+
}
29+
30+
31+
#[cfg(test)]
32+
mod tests {
33+
use super::*;
34+
35+
#[test] fn common_test() {
36+
let mut v = linklist!(1,2,3, 3);
37+
println!("{:?}", Solution::remove_elements(v, 3))
38+
39+
}
40+
41+
42+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /