Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions problems/0152_Maximum_Product_Subarray/Jackis.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
//1
class Solution {
public:
int maxProduct(vector<int>& nums) {
//dp Solution
int n = nums.size();
vector<int> f(n); //max
vector<int> g(n); //min
int res;
res = f[0] = g[0] = nums[0];
for(int i=1; i<n; i++)
{
f[i] = max(max(f[i-1]*nums[i], g[i-1]*nums[i]), nums[i]);
g[i] = min(min(f[i-1]*nums[i], g[i-1]*nums[i]), nums[i]);
if(f[i] > res)
res = f[i];
}
return res;
}
};

//2
class Solution {
public:
int maxProduct(vector<int>& nums) {
//dp Solution
int res=nums[0], mx=res, mn=res;
for(int i=1; i<nums.size(); i++)
{
if(nums[i] > 0)
{
mx = max(mx*nums[i], nums[i]);
mn = min(mn*nums[i], nums[i]);
}
else
{
int tmp = mx;
mx = max(mn*nums[i], nums[i]);
mn = min(tmp*nums[i], nums[i]);
}
res = max(res, mx);
}
return res;
}
};
//3
class Solution {
public:
int maxProduct(vector<int>& nums) {
//dp Solution
int res=nums[0], mx=res, mn=res;
for(int i=1; i<nums.size(); i++)
{
if(nums[i] < 0)
swap(mx, mn);
mx = max(mx*nums[i], nums[i]);
mn = min(mn*nums[i], nums[i]);
res = max(res, mx);
}
return res;
}
};
//4
class Solution {
public:
int maxProduct(vector<int>& nums) {
int res=nums[0], prod=1, n=nums.size();
for(int i=0; i<n; i++)
{
res = max(res, prod*=nums[i]);
if(nums[i] == 0)
prod = 1;
}
prod = 1;
for(int i=n-1; i>=0; i--)
{
res = max(res, prod*=nums[i]);
if(nums[i] == 0)
prod = 1;
}
return res;
}
};
54 changes: 54 additions & 0 deletions problems/0973_K_Closest_Points_to_Origin/Jackis.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/*
基于选择排序的方法,但该方法提交时显示超时
*/

class Solution {
public:
vector<vector<int>> kClosest(vector<vector<int>>& points, int K) {
vector<vector<int>> res;
SelectSort(points, res, K);
return res;
}
double Distance(vector<int> n)
{
return (double)n[0]*n[0] + (double)n[1]*n[1];
}
void SelectSort(vector<vector<int>>& num, vector<vector<int>>& res, int K)
{
double min;
int min_pos;
int i, j;
for(i=0; i<K; i++)
{
min = Distance(num[i]);
min_pos = i;
for(j=i+1; j<num.size(); ++j)
{
double num_j = Distance(num[j]);
if(num_j < min)
{
min = num_j;
min_pos = j;
}
}
swap(num[i], num[min_pos]);
res.push_back(num[i]);
}

}
};
/*
直接使用STL里的sort函数排序,只保留下标为[0--k-1]的数
*/
class Solution {
public:
vector<vector<int>> kClosest(vector<vector<int>>& points, int K) {
sort(begin(points), end(points), [this](auto& f, auto& s)
{
return (f[0]*f[0] + f[1]*f[1] < s[0]*s[0] + s[1]*s[1]);
});

points.erase(begin(points) + K, end(points));
return points;
}
};
1 change: 1 addition & 0 deletions submittors/Jackis-1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This is
Empty file added submittors/Jackis-2.txt
Empty file.