Skip to content

Commit d86a584

Browse files
committed
2020/01/19
1 parent c6c3bc1 commit d86a584

4 files changed

+115
-0
lines changed

C++/5315 Maximum 69 Number.cpp

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution {
2+
public:
3+
int maximum69Number (int num) {
4+
int *d = new int[6];
5+
d[1] = num / 10000;
6+
d[2] = (num/1000) % 10;
7+
d[3] = (num/100) % 10;
8+
d[4] = (num/10) % 10;
9+
d[5] = num % 10;
10+
int start;
11+
for(start=1; start<=5; start++) {
12+
if(d[start] != 0) break;
13+
}
14+
int ret = 0; bool flag = true;
15+
for(int i=start; i<=5; i++) {
16+
if(flag) {
17+
if(d[i] == 6) {
18+
flag = false;
19+
d[i] = 9;
20+
}
21+
}
22+
ret = ret * 10 + d[i];
23+
}
24+
return ret;
25+
}
26+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* struct TreeNode {
4+
* int val;
5+
* TreeNode *left;
6+
* TreeNode *right;
7+
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
8+
* };
9+
*/
10+
class Solution {
11+
public:
12+
TreeNode* removeLeafNodes(TreeNode* root, int target) {
13+
if(root->left != NULL) root->left = removeLeafNodes(root->left, target);
14+
if(root->right != NULL) root->right = removeLeafNodes(root->right, target);
15+
if(root->left == NULL && root->right == NULL) { // 叶子节点
16+
if(root->val == target) return NULL;
17+
else return root;
18+
}
19+
return root;
20+
}
21+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
class Solution {
2+
private:
3+
struct Interval {
4+
int left;
5+
int right;
6+
} itv[10001];
7+
static bool cmp (Interval A, Interval B) {
8+
if(A.left != B.left) return A.left < B.left;
9+
else return A.right < B.right;
10+
}
11+
public:
12+
int minTaps(int n, vector<int>& ranges) {
13+
for(int i=0; i<=n; i++) {
14+
itv[i].left = max(0, i-ranges[i]);
15+
itv[i].right = min(n, i+ranges[i]);
16+
}
17+
sort(itv, itv+n+1, cmp);
18+
int leftmost = 0, cnt = 0, rightmost = 0;
19+
for(int i=0; i<=n; i++) {
20+
if(leftmost >= itv[i].left) {
21+
rightmost = max(rightmost, itv[i].right);
22+
} else { // 这一处超了
23+
if(rightmost > leftmost) {
24+
leftmost = rightmost;
25+
rightmost = 0;
26+
cnt++;
27+
i--;
28+
} else {
29+
return -1;
30+
}
31+
}
32+
}
33+
if(rightmost > leftmost) cnt++;
34+
return cnt;
35+
}
36+
};

Rust/5316 Print Words Vertically.rs

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
impl Solution {
2+
pub fn print_vertically(s: String) -> Vec<String> {
3+
let mut ret : Vec<String> = Vec::new();
4+
let mut maxlen = 0;
5+
for word in s.split_whitespace() {
6+
if word.len() > maxlen {
7+
maxlen = word.len();
8+
}
9+
}
10+
for i in 0..maxlen {
11+
let mut curcol = String::new();
12+
for word in s.split_whitespace() {
13+
if(word.len() > i) {
14+
curcol.push_str(&word[i..i+1]);
15+
} else {
16+
curcol = curcol + " ";
17+
}
18+
}
19+
let len = curcol.len();
20+
let mut cnt = 0;
21+
for ch in curcol.chars().rev() {
22+
if(ch != ' ') {
23+
break;
24+
}
25+
cnt = cnt + 1;
26+
}
27+
curcol = curcol[0..len-cnt].to_string();
28+
ret.push(curcol);
29+
}
30+
return ret;
31+
}
32+
}

0 commit comments

Comments
 (0)