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 c7fd1d7

Browse files
author
fupengfei
committed
01/22 COMMIT
1 parent a5c6eb4 commit c7fd1d7

File tree

4 files changed

+129
-0
lines changed

4 files changed

+129
-0
lines changed

‎Leetcode/55. Jump Game.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/*Jump Game:Given an array of non-negative integers, you are initially positioned at the first index of the array.*/
2+
class Solution {
3+
public:
4+
bool canJump(vector<int>& nums) {
5+
int overflow = 0;
6+
for(int i = 0; i < nums.size() - 1; i++){
7+
if(overflow < i) return false;
8+
int k = i + nums[i];
9+
if(k > overflow) overflow = k;
10+
}
11+
return overflow >= nums.size() - 1;
12+
}
13+
};

‎Leetcode/56. Merge Intervals.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*Merge Intervals:Given a collection of intervals, merge all overlapping intervals.*/
2+
/**
3+
* Definition for an interval.
4+
* struct Interval {
5+
* int start;
6+
* int end;
7+
* Interval() : start(0), end(0) {}
8+
* Interval(int s, int e) : start(s), end(e) {}
9+
* };
10+
*/
11+
class Solution {
12+
public:
13+
vector<Interval> merge(vector<Interval>& intervals) {
14+
if(intervals.empty()) return intervals;
15+
sort(intervals.begin(), intervals.end(), comp);
16+
vector<Interval> res;
17+
res.push_back(intervals[0]);
18+
for(int i = 1; i < intervals.size(); i++){
19+
Interval &p = res.back();
20+
if(intervals[i].start > p.end)res.push_back(intervals[i]);
21+
else if(intervals[i].end > p.end)p.end = intervals[i].end;
22+
}
23+
return res;
24+
}
25+
private:
26+
static bool comp(Interval a, Interval b){
27+
return a.start < b.start;
28+
}
29+
};

‎Leetcode/57. Insert Interval.cpp

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
/*Insert Interval:Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).*/
2+
/**
3+
* Definition for an interval.
4+
* struct Interval {
5+
* int start;
6+
* int end;
7+
* Interval() : start(0), end(0) {}
8+
* Interval(int s, int e) : start(s), end(e) {}
9+
* };
10+
*/
11+
class Solution {
12+
public:
13+
vector<Interval> insert(vector<Interval>& intervals, Interval newInterval) {
14+
auto itr = intervals.begin();
15+
for (; itr != intervals.end() && newInterval.end >= itr->start; itr++)
16+
{
17+
if (canMerge(*itr, newInterval))
18+
{
19+
*itr = merge(*itr, newInterval);
20+
21+
// 检查后面的区间是否可以合并进来。
22+
auto itr2 = itr + 1;
23+
for (; itr2 != intervals.end(); itr2++)
24+
{
25+
if (canMerge(*itr, *itr2))
26+
{
27+
*itr = merge(*itr, *itr2);
28+
}
29+
else
30+
{
31+
break;
32+
}
33+
}
34+
intervals.erase(itr + 1, itr2);
35+
return intervals;
36+
}
37+
}
38+
39+
// 如果newInterval不能跟任何一个已有的区间合并,那就把它插入数组的合适位置。
40+
// 所谓合适的位置,就是插入第一个比它的start大的区间前面。
41+
intervals.insert(itr, newInterval);
42+
return intervals;
43+
}
44+
private:
45+
bool canMerge(const Interval &i1, const Interval &i2)
46+
{
47+
if (i1.start <= i2.start)
48+
{
49+
return i2.start <= i1.end;
50+
}
51+
else
52+
{
53+
return canMerge(i2, i1);
54+
}
55+
}
56+
57+
Interval merge(const Interval &i1, const Interval &i2)
58+
{
59+
if (i1.start <= i2.start)
60+
{
61+
return Interval(i1.start, max(i1.end, i2.end));
62+
}
63+
else
64+
{
65+
return merge(i2, i1);
66+
}
67+
}
68+
};

‎Leetcode/58. Length of Last Word.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/*Length of Last Word:Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string.*/
2+
class Solution {
3+
public:
4+
int lengthOfLastWord(string s) {
5+
char c;
6+
int end = s.size() - 1;
7+
while (end >= 0 && s[end] == ' ')
8+
end--;
9+
10+
int start = end - 1;
11+
while (start >= 0 && s[start] != ' ')
12+
start--;
13+
14+
if (end == -1)
15+
return 0;
16+
17+
return end - start;
18+
}
19+
};

0 commit comments

Comments
(0)

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