Skip to content

Commit c78056d

Browse files
committed
long time
1 parent c5a0c77 commit c78056d

File tree

15 files changed

+490
-0
lines changed

15 files changed

+490
-0
lines changed

src/3.13.cpp

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
//二分
2+
//空间换时间,用空间存储需要重复计算的值
3+
#include<iostream>
4+
#include<vector>
5+
using namespace std;
6+
class Solution {
7+
public:
8+
9+
int maxProfit(vector<int> &prices) {
10+
int max=0;
11+
int h1=0;
12+
vector<int> l;
13+
vector<int> r;
14+
l.push_back(0);
15+
if(prices.size()<2)return 0;
16+
for(int i=1;i<prices.size();i++){
17+
if(prices[i]-prices[h1]>max){
18+
max=prices[i]-prices[h1];
19+
l.push_back(max);
20+
}
21+
else
22+
l.push_back(max);
23+
if(prices[h1]>prices[i])
24+
h1=i;
25+
}
26+
r.push_back(0);
27+
max=0;
28+
h1=prices.size()-1;
29+
for(int i=prices.size()-2;i>=0;i--){
30+
if(prices[h1]-prices[i]>max){
31+
max=prices[h1]-prices[i];
32+
r.push_back(max);
33+
}
34+
else
35+
r.push_back(max);
36+
if(prices[i]>prices[h1])
37+
h1=i;
38+
}
39+
max=0;
40+
for(int i=0,j=prices.size()-1;i<prices.size(),j>=0;i++,j--)
41+
{
42+
if(l[i]+r[j]>max)
43+
max=l[i]+r[j];
44+
}
45+
return max;
46+
}
47+
};
48+
int main()
49+
{
50+
Solution so;
51+
vector<int> a;
52+
a.push_back(1);
53+
a.push_back(2);
54+
55+
cout<<so.maxProfit(a);
56+
}

src/3.13.cpp~

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
//二分
2+
//空间换时间,用空间存储需要重复计算的值
3+
#include<iostream>
4+
#include<vector>
5+
using namespace std;
6+
class Solution {
7+
public:
8+
9+
int maxProfit(vector<int> &prices) {
10+
int max=0;
11+
int h1=0;
12+
vector<int> l;
13+
vector<int> r;
14+
l.push_back(0);
15+
if(prices.size()<2)return 0;
16+
for(int i=1;i<prices.size();i++){
17+
if(prices[i]-prices[h1]>max){
18+
max=prices[i]-prices[h1];
19+
l.push_back(max);
20+
}
21+
else
22+
l.push_back(max);
23+
if(prices[h1]>prices[i])
24+
h1=i;
25+
}
26+
r.push_back(0);
27+
max=0;
28+
h1=prices.size()-1;
29+
for(int i=prices.size()-2;i>=0;i--){
30+
if(prices[h1]-prices[i]>max){
31+
max=prices[h1]-prices[i];
32+
r.push_back(max);
33+
}
34+
else
35+
r.push_back(max);
36+
if(prices[i]>prices[h1])
37+
h1=i;
38+
}
39+
max=0;
40+
for(int i=0,j=prices.size()-1;i<prices.size(),j>=0;i++,j--)
41+
{
42+
if(l[i]+r[j]>max)
43+
max=l[i]+r[j];
44+
}
45+
return max;
46+
}
47+
};
48+
int main()
49+
{
50+
Solution so;
51+
vector<int> a;
52+
a.push_back(1);
53+
a.push_back(2);
54+
55+
cout<<so.maxProfit(a);
56+
}

src/9.cpp

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
class Solution {
2+
public:
3+
bool isPalindrome(int x) {
4+
int y=x;
5+
int z=0;
6+
int o=10;
7+
int a,b;
8+
//溢出!!!另一种方法
9+
if(x<0)
10+
return false;
11+
/* while(x){
12+
z=z*10+x%10;
13+
x=x/10;
14+
}
15+
if(y==z)
16+
return true;
17+
else
18+
return false;
19+
*/
20+
while(x/o>=10)
21+
o=o*10;
22+
while(x>=0){
23+
if(x/10==0)
24+
return true;
25+
a=x/o;
26+
b=x%10;
27+
if(a!=b)
28+
return false;
29+
else{
30+
x=x%o;
31+
x=x/10;
32+
o=o/100;
33+
}
34+
}
35+
36+
}
37+
};

src/9.cpp~

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
class Solution {
2+
public:
3+
bool isPalindrome(int x) {
4+
int y=x;
5+
int z=0;
6+
int o=10;
7+
int a,b;
8+
//溢出!!!另一种方法
9+
if(x<0)
10+
return false;
11+
/* while(x){
12+
z=z*10+x%10;
13+
x=x/10;
14+
}
15+
if(y==z)
16+
return true;
17+
else
18+
return false;
19+
*/
20+
while(x/o>=10)
21+
o=o*10;
22+
while(x>=0){
23+
if(x/10==0)
24+
return true;
25+
a=x/o;
26+
b=x%10;
27+
if(a!=b)
28+
return false;
29+
else{
30+
x=x%o
31+
x=x/10;
32+
o=o/100;
33+
}
34+
}
35+
36+
}
37+
};

src/gc

73.3 KB
Binary file not shown.

src/gc.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#include<vector>
2+
#include<iostream>
3+
using namespace std;
4+
class Solution{
5+
public:
6+
vector<int> grayCode(int n){
7+
vector<int> g;
8+
int s=1<<n;
9+
for(int i=0;i<s;i++){
10+
g.push_back(i^(i>>1));
11+
cout<<(i>>1)<<endl;
12+
}
13+
14+
return g;
15+
}
16+
};
17+
int main()
18+
{
19+
Solution so;
20+
vector<int> c;
21+
c=so.grayCode(3);
22+
for(int i=0;i<c.size();i++)
23+
{
24+
cout<<c[i]<<" ";
25+
}
26+
return 0;
27+
}

src/gc.cpp~

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#include<vector>
2+
#include<iostream>
3+
using namespace std;
4+
class Solution{
5+
public:
6+
vector<int> grayCode(int n){
7+
vector<int> g;
8+
int s=1<<n;
9+
for(int i=0;i<s;i++){
10+
g.push_back(i^(i>>1));
11+
cout<<(i>>1)<<endl;
12+
}
13+
14+
return g;
15+
}
16+
};
17+
int main()
18+
{
19+
Solution so;
20+
vector<int> c;
21+
c=so.grayCode(3);
22+
for(int i=0;i<c.size();i++)
23+
{
24+
cout<<c[i]<<" ";
25+
}
26+
return 0;
27+
}

src/llc2.cpp

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* struct ListNode {
4+
* int val;
5+
* ListNode *next;
6+
* ListNode(int x) : val(x), next(NULL) {}
7+
* };
8+
*/
9+
//先求环的长度,然后l=环长+入口长,1从环长遍历,2从开头遍历,相遇点为入口
10+
//数学推理
11+
class Solution {
12+
public:
13+
ListNode *detectCycle(ListNode *head) {
14+
ListNode *p1=head,*p2=head;
15+
if(head==NULL||head->next==NULL)
16+
return NULL;
17+
p1=p1->next;
18+
p2=p2->next->next;
19+
int l1=1,l2=2;
20+
while(1)
21+
{
22+
23+
if(p1==p2)
24+
{
25+
break;
26+
}
27+
if(p1->next==NULL)
28+
return NULL;
29+
else p1=p1->next;
30+
if(p2->next==NULL)
31+
return NULL;
32+
else if(p2->next->next==NULL)
33+
return NULL;
34+
else p2=p2->next->next;
35+
l1+=1;
36+
l2+=2;
37+
}
38+
int m=l2-l1;
39+
p1=head;
40+
p2=head;
41+
while(m)
42+
{
43+
p1=p1->next;
44+
m--;
45+
}
46+
while(1)
47+
{
48+
if(p1==p2)
49+
return p1;
50+
p1=p1->next;
51+
p2=p2->next;
52+
}
53+
}
54+
};

src/llc2.cpp~

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* struct ListNode {
4+
* int val;
5+
* ListNode *next;
6+
* ListNode(int x) : val(x), next(NULL) {}
7+
* };
8+
*/
9+
//先求环的长度,然后l=环长+入口长,1从环长遍历,2从开头遍历,相遇点为入口
10+
//数学推理
11+
class Solution {
12+
public:
13+
ListNode *detectCycle(ListNode *head) {
14+
ListNode *p1=head,*p2=head;
15+
if(head==NULL||head->next==NULL)
16+
return NULL;
17+
p1=p1->next;
18+
p2=p2->next->next;
19+
int l1=1,l2=2;
20+
while(1)
21+
{
22+
23+
if(p1==p2)
24+
{
25+
break;
26+
}
27+
if(p1->next==NULL)
28+
return NULL;
29+
else p1=p1->next;
30+
if(p2->next==NULL)
31+
return NULL;
32+
else if(p2->next->next==NULL)
33+
return NULL;
34+
else p2=p2->next->next;
35+
l1+=1;
36+
l2+=2;
37+
}
38+
int m=l2-l1;
39+
p1=head;
40+
p2=head;
41+
while(m)
42+
{
43+
p1=p1->next;
44+
m--;
45+
}
46+
while(1)
47+
{
48+
if(p1==p2)
49+
return p1;
50+
p1=p1->next;
51+
p2=p2->next;
52+
}
53+
}
54+
};

src/max

21.5 KB
Binary file not shown.

0 commit comments

Comments
 (0)