Skip to content

Commit 1c54142

Browse files
committed
leetcode 2/14/2014
1 parent 4949d1d commit 1c54142

3 files changed

Lines changed: 129 additions & 0 deletions

File tree

LeetCode/grayCode.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <algorithm>
4+
using namespace std;
5+
6+
#define REP(i,n) for(int i=0;i<(n);++i)
7+
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
8+
#define RFOR(i,a,b) for(int i=(a);i>=(b);--i)
9+
10+
class Solution {
11+
public:
12+
vector<int> grayCode(int n) {
13+
int num = (1 << n);
14+
vector<int> ret;
15+
REP(i,num) {
16+
ret.push_back(i ^ (i >> 1));
17+
}
18+
return ret;
19+
}
20+
};
21+
22+
int main() {
23+
return 0;
24+
}

LeetCode/isValidSudoku.cpp

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <algorithm>
4+
using namespace std;
5+
6+
#define REP(i,n) for(int i=0;i<(n);++i)
7+
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
8+
#define RFOR(i,a,b) for(int i=(a);i>=(b);--i)
9+
10+
class Solution {
11+
public:
12+
bool isValidSudoku(vector<vector<char> > &board) {
13+
REP(i,9) {
14+
vector<int> r(10, 0), c(10, 0);
15+
REP(j,9) {
16+
if (board[i][j] != '.') {
17+
int num = board[i][j] - '0';
18+
if (r[num] == 1) return false;
19+
r[num] = 1;
20+
}
21+
if (board[j][i] != '.') {
22+
int num = board[j][i] - '0';
23+
if (c[num] == 1) return false;
24+
c[num] = 1;
25+
}
26+
}
27+
}
28+
29+
for (int rr = 0; rr < 9; rr += 3) {
30+
for (int cc = 0; cc < 9; cc += 3) {
31+
vector<int> m(10, 0);
32+
REP(i,3) {
33+
REP(j,3) {
34+
if (board[rr + i][cc + j] != '.') {
35+
int num = board[rr + i][cc + j] - '0';
36+
if (m[num] == 1) return false;
37+
m[num] = 1;
38+
}
39+
}
40+
}
41+
}
42+
}
43+
44+
return true;
45+
}
46+
};
47+
48+
int main() {
49+
return 0;
50+
}

LeetCode/searchRange.cpp

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <algorithm>
4+
using namespace std;
5+
6+
#define REP(i,n) for(int i=0;i<(n);++i)
7+
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
8+
#define RFOR(i,a,b) for(int i=(a);i>=(b);--i)
9+
10+
class Solution {
11+
public:
12+
vector<int> searchRange(int A[], int n, int target) {
13+
vector<int> ret;
14+
int l = 0, r = n - 1;
15+
while (l <= r) {
16+
int m = (l + r) / 2;
17+
if (target <= A[m]) r = m - 1;
18+
else l = m + 1;
19+
}
20+
if (n == 0 || r + 1 >= n || A[r + 1] != target) {
21+
ret.push_back(-1);
22+
ret.push_back(-1);
23+
return ret;
24+
}
25+
ret.push_back(r + 1);
26+
27+
l = 0, r = n - 1;
28+
while (l <= r) {
29+
int m = (l + r) / 2;
30+
if (target >= A[m]) l = m + 1;
31+
else r = m - 1;
32+
}
33+
ret.push_back(l - 1);
34+
return ret;
35+
}
36+
};
37+
38+
void test(int mm[], int len, int target) {
39+
Solution s;
40+
vector<int> ret = s.searchRange(mm, len, target);
41+
cout << ret[0] << " " << ret[1] << endl;
42+
}
43+
44+
int main() {
45+
int mm1[] = {5, 7, 7, 8, 8, 10};
46+
test(mm1, sizeof(mm1) / sizeof(mm1[0]), 8);
47+
test(mm1, sizeof(mm1) / sizeof(mm1[0]), 4);
48+
test(mm1, sizeof(mm1) / sizeof(mm1[0]), 11);
49+
test(mm1, sizeof(mm1) / sizeof(mm1[0]), 6);
50+
51+
int mm2[] = {};
52+
test(mm2, sizeof(mm2) / sizeof(mm2[0]), 8);
53+
54+
return 0;
55+
}

0 commit comments

Comments
 (0)