https://leetcode-cn.com/problems/longest-continuous-increasing-subsequence/
class Solution {
public int findLengthOfLCIS(int[] nums) {
if(nums.length == 0||nums.length == 1){ //特殊当数组长度为0或者1时返回他们的长度即可
return nums.length;
}
int count = 1; //临时统计最长序列
int maxCount = 1; //统计最长递增序列
for (int i=0;i<nums.length-1;i++){ //遍历数组
if (nums[i]<nums[i+1]){ //对数组递增进行比较
count++; //如果大于前一个数则count加一
}else{
count = 1;
}
maxCount =count>maxCount?count:maxCount; //比较输出最长连续递增数
}
return maxCount;
}
}
https://leetcode-cn.com/problems/find-pivot-index/
右边和=总和-中心索引值-左边一次加的总和(判断)
class Solution {
public int pivotIndex(int[] nums) {
int sum=0;
for(int num:nums){ //运用foreach循环只记录来算出总和
sum+=num;
}
int leftSum=0; //左边和与右边设立初始值0
int rightSum=0;
for(int i=0;i<nums.length;i++){ //遍历数组
if(i==0){
leftSum=0;
}else{
leftSum+=nums[i-1]; //左边累加数字
}
rightSum=sum-nums[i]-leftSum; //右边和=总和-中心索引值-左边一次加的总和(判断)
if(rightSum==leftSum){ //判读左右两值是否相等
return i;
}
}
return -1;
}
}
https://leetcode-cn.com/problems/sort-array-by-parity/
我们可以排序来实现,但时间复杂度高,所以我们对他左右奇偶性进行判断,然后进行交换
class Solution {
public int[] sortArrayByParity(int[] A) { //相当于双指针
int left=0; //左边从0开始
int right = A.length -1 ;
while(left < right){ //结束条件
if(A[left]%2 == 1&&A[right]%2 == 0){ //如果左奇右偶那就交换
int temp = A[left];
A[left] = A[right];
A[right]=temp;
}else if(A[left]%2==0&&A[right]%2==1){ //如果左偶右奇左边继续向后右边继续向前
left++;
right--;
}else if(A[left]%2==0&&A[right]%2==0){ //如果左偶右偶左边向后找右边不懂等着交换
left++;
}else{
right--; //如果就是左奇右奇右边减减找偶数
}
}
return A;
}
}
https://leetcode-cn.com/problems/partition-array-into-three-parts-with-equal-sum/
数组总和除以三就是每个相等部分的和利用这个值统计是否到达三次即可
class Solution {
public boolean canThreePartsEqualSum(int[] A) {
int sum=0;
for(int num:A){ //用foreach 来统计数组值和
sum+=num;
}
int key=sum/3; //计算出三分之一的总和
int group=0;
for(int i=0;i<A.length;i++){ //遍历数组
key-=A[i];
if(key==0){ //一直减到key等于0
group++;
key=sum/3; //给key从新赋值
}
}
return group==3; //判断
}
}