剑指 Offer 57 - II. 和为s的连续正数序列
class Solution {
public int[][] findContinuousSequence(int target){
List<int[]> res=new ArrayList<>();
int i=1;
int j=2;
int sum=3;
while(i<=target/2){
if(sum<target){
j++;
sum+=j;
}else if(sum>target){
sum-=i;
i++;
}else{
int[] temp=new int[j-i+1];
for(int k=i;k<j+1;k++){
temp[k-i]=k;
}
res.add(temp);
sum-=i;
i++;
}
}
return res.toArray(new int[res.size()][]);
}
}
剑指 Offer 62. 圆圈中最后剩下的数字
class Solution {
public int lastRemaining(int n, int m) {
List<Integer> list=new ArrayList<>();
for(int i=0;i<n;i++){
list.add(i);
}
int num=0;
int temp=0;
while(list.size()!=1){
num=(m-1+temp)%list.size();
list.remove(num);
temp=num;
}
return list.get(0);
}
}
剑指 Offer 14- I. 剪绳子
class Solution {
public int cuttingRope(int n) {
if(n==2) return 1;
int[] dp=new int[n+1];
dp[2]=1;
for(int i=3;i<n+1;i++){
for(int j=1;j<i;j++){
dp[i]=Math.max(j*(i-j),Math.max(dp[i],Math.max(dp[j]*(i-j),dp[i-j]*j)));
}
}
return dp[n];
}
}