Skip to content

Commit 39663c8

Browse files
committed
main changes
1 parent 2f1d0a6 commit 39663c8

File tree

2 files changed

+63
-27
lines changed

2 files changed

+63
-27
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Python code for implementation of Naive Recursive
2+
# approach
3+
def isPalindrome(x):
4+
return x == x[::-1]
5+
6+
7+
def minPalPartion(string, i, j):
8+
if i >= j or isPalindrome(string[i:j + 1]):
9+
return 0
10+
ans = float('inf')
11+
for k in range(i, j):
12+
count = (
13+
1 + minPalPartion(string, i, k)
14+
+ minPalPartion(string, k + 1, j)
15+
)
16+
ans = min(ans, count)
17+
return ans
18+
19+
20+
def main():
21+
string = "ababbbabbababa"
22+
print(
23+
"Min cuts needed for Palindrome Partitioning is ",
24+
minPalPartion(string, 0, len(string) - 1),
25+
)
26+
27+
if __name__ == "__main__":
28+
main()
29+
30+
# This code is contributed by itsvinayak
Lines changed: 33 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,40 @@
1-
// Time: O(n^2)
2-
// Space: O(1)
3-
41
class Solution {
52
public:
6-
vector<vector<int>> threeSum(vector<int> &nums) {
7-
sort(begin(nums), end(nums));
8-
vector<vector<int>> result;
9-
for (int i = size(nums) - 1; i >= 2; --i) {
10-
if (i + 1 < size(nums) && nums[i] == nums[i + 1]) {
3+
vector<vector<int>> threeSum(vector<int>& nums) {
4+
vector<vector<int>>ans;
5+
vector<int> temp;
6+
sort(nums.begin(), nums.end());
7+
if(nums.size()<3)
8+
return ans;
9+
int i,j,k;
10+
for(i=0;i<nums.size()-2;i++){
11+
if(i!=0 && nums[i]==nums[i-1])
1112
continue;
12-
}
13-
const auto& target = -nums[i];
14-
int left = 0, right = i - 1;
15-
while (left < right) {
16-
if (nums[left] + nums[right] < target) {
17-
++left;
18-
} else if (nums[left] + nums[right] > target) {
19-
--right;
20-
} else {
21-
result.push_back({nums[left], nums[right], nums[i]});
22-
++left; --right;
23-
while (left < right && nums[left] == nums[left - 1]) {
24-
++left;
25-
}
26-
while (left < right && nums[right] == nums[right + 1]) {
27-
--right;
28-
}
13+
j=i+1;
14+
k=nums.size()-1;
15+
16+
while(j<k){
17+
if(-nums[i]==nums[j]+nums[k]){
18+
temp.clear();
19+
temp.push_back(nums[i]);
20+
temp.push_back(nums[j]);
21+
temp.push_back(nums[k]);
22+
// if(find(ans.begin(),ans.end(),temp)==ans.end()){
23+
ans.push_back(temp);
24+
//cout<<"in if";
25+
// }
26+
while(j<k && nums[j]==nums[j+1])
27+
j++;
28+
j++;
29+
30+
k--;
2931
}
32+
else if(-nums[i]<nums[j]+nums[k])
33+
k--;
34+
else
35+
j++;
3036
}
3137
}
32-
return result;
38+
return ans;
3339
}
34-
};
40+
};

0 commit comments

Comments
 (0)