File tree Expand file tree Collapse file tree 6 files changed +176
-0
lines changed Expand file tree Collapse file tree 6 files changed +176
-0
lines changed Original file line number Diff line number Diff line change
1
+ int minTimeToVisitAllPoints (vector<vector<int >>& points) {
2
+ int len = points.size ();
3
+ if (len == 1 )
4
+ return 0 ;
5
+ int a = points[0 ][0 ], b = points[0 ][1 ];
6
+ int sum = 0 ;
7
+ for (int i = 1 ; i < len; ++i)
8
+ {
9
+ int c = points[i][0 ], d = points[i][1 ];
10
+ if (a == c && b != d)
11
+ sum += abs (b-d);
12
+ else if (a != c && b == d)
13
+ sum += abs (a-c);
14
+ else if (a != c && b != d)
15
+ {
16
+ int mindiff = abs (a-c) < abs (b-d) ? abs (a-c) : abs (b-d);
17
+ int delta = abs (abs (a-c)-abs (b-d));
18
+ sum += mindiff + delta;
19
+ }
20
+ a = c;
21
+ b = d;
22
+ }
23
+
24
+ return sum;
25
+ }
Original file line number Diff line number Diff line change
1
+ int minOperations (vector<int >& nums) {
2
+ int len = nums.size ();
3
+ int sum = 0 ;
4
+ for (int i = 1 ; i < len; ++i)
5
+ {
6
+ if (nums[i] <= nums[i-1 ])
7
+ {
8
+ sum += nums[i-1 ]-nums[i]+1 ;
9
+ nums[i] = nums[i-1 ]+1 ;
10
+ }
11
+ }
12
+
13
+ return sum;
14
+ }
Original file line number Diff line number Diff line change
1
+ int maxIceCream (vector<int >& costs, int coins) {
2
+ int len = costs.size ();
3
+ sort (costs.begin (), costs.end ());
4
+
5
+ int n = 0 ;
6
+ int i = 0 ;
7
+ while (i < len && coins > 0 )
8
+ {
9
+ if (coins >= costs[i])
10
+ {
11
+ coins -= costs[i];
12
+ ++i;
13
+ ++n;
14
+ }
15
+ else
16
+ break ;
17
+ }
18
+
19
+ return n;
20
+ }
Original file line number Diff line number Diff line change
1
+ int sumBase (int n, int k) {
2
+ int sum = 0 ;
3
+ while (n >= k)
4
+ {
5
+ sum += n%k;
6
+ n /= k;
7
+ }
8
+
9
+ return sum+n;
10
+ }
Original file line number Diff line number Diff line change
1
+ int minCostClimbingStairs (vector<int >& cost) {
2
+ int len = cost.size ();
3
+ vector<int > dp (len+1 , 0 );
4
+
5
+ dp[0 ] = 0 ;
6
+ dp[1 ] = 0 ;
7
+ int i = 2 ;
8
+ while (i <= len)
9
+ {
10
+ dp[i] = min (dp[i-1 ]+cost[i-1 ], dp[i-2 ]+cost[i-2 ]);
11
+ ++i;
12
+ }
13
+
14
+ return dp[len];
15
+ }
Original file line number Diff line number Diff line change
1
+ ListNode* deleteDuplicates (ListNode* head) {
2
+ if (head == nullptr || head->next == nullptr )
3
+ return head;
4
+
5
+ ListNode* node = head;
6
+ int refval = head->val ;
7
+ ListNode* tmp = node->next ;
8
+ bool flag = false ;
9
+ while (tmp != nullptr )
10
+ {
11
+ if (tmp->val == refval)
12
+ {
13
+ ListNode* p = tmp->next ;
14
+ delete tmp;
15
+ tmp = p;
16
+ flag = true ;
17
+ }
18
+ else
19
+ {
20
+ if (!flag)
21
+ {
22
+ head = node;
23
+ break ;
24
+ }
25
+ else
26
+ {
27
+ delete node;
28
+ node = tmp;
29
+ tmp = tmp->next ;
30
+ refval = node->val ;
31
+ flag = false ;
32
+ }
33
+ }
34
+ }
35
+
36
+ if (tmp == nullptr )
37
+ {
38
+ if (flag)
39
+ {
40
+ delete node;
41
+ return nullptr ;
42
+ }
43
+ else
44
+ {
45
+ head = node;
46
+ return head;
47
+ }
48
+ }
49
+
50
+ flag = false ;
51
+ refval = tmp->val ;
52
+ ListNode* tmp2 = tmp->next ;
53
+ ListNode* lastnode = node;
54
+ while (tmp2 != nullptr )
55
+ {
56
+ if (tmp2->val == refval)
57
+ {
58
+ ListNode* p = tmp2->next ;
59
+ tmp->next = p;
60
+ delete tmp2;
61
+ tmp2 = p;
62
+ flag = true ;
63
+ }
64
+ else
65
+ {
66
+ if (!flag)
67
+ {
68
+ refval = tmp2->val ;
69
+ lastnode = tmp;
70
+ tmp = tmp2;
71
+ tmp2 = tmp2->next ;
72
+ }
73
+ else
74
+ {
75
+ lastnode->next = tmp2;
76
+ delete tmp;
77
+ refval = tmp2->val ;
78
+ tmp = tmp2;
79
+ tmp2 = tmp2->next ;
80
+ flag = false ;
81
+ }
82
+ }
83
+ }
84
+
85
+ if (flag)
86
+ {
87
+ lastnode->next = nullptr ;
88
+ delete tmp;
89
+ }
90
+
91
+ return head;
92
+ }
You can’t perform that action at this time.
0 commit comments