xcl
class solution1313{
public int[] decompressRLElist(int[] nums){
int len=0;
for(int i=0;i<nums.length;i+=2){
len+=nums[i];
}
int[] arr = new int[len];
int intdex=0;
for(int i=1;i<nums.length;i+=2){
for(int j=0;j<nums[i-1];i++){
arr[index++]=nums[i]
}
}
return arr;
}
}
import java.util.*;
class Q66{
public static void main(String[] args){
int[] digits={9,8,7,6,5,4,3,2,1,0};
System.out.println(Array.toString(plusOne(digits)));
}
public static int[] plusOne(int[] digits){
int carry=1;
for(int i=digits.length-1;i>=0;i--){
int num=digits[i]+carry;
digits[i]=num%10;
carry=num/10;
if(carry==0){
break;
}
}
if(carry==1){
int[] arr= new int[digits.length+1];
arr[0]=1;
return arr;
}
return digits;
}
}
class Q{
public int majorityElement(int[] nums){
//不使用排序 在O(n)解决
int m=nums[o];
int count=1;
for(int i=1;i<nums.length;i++){
if(nums[i]==m){
count++;
}else{
count--;
if(count==0){
m=nums[i];
count=1;
}
}
}
return m;
}
}
class Q209{
public int minSubArrayLen(int s,int[] nums){
int len=0;
int i=0;
int sum=0;
for(int j=0;j<nums.lenth;j++){
sum+=nums[j];
while(sum<=s){
len=len==0?(j-j+1):Math.min(len,j-i+1);
sum-=sums[i];
i++;
}
}
return len;
}
}
class Q283{
public void moveZeroes(int[] nums){
int k=0;
int temp=0;
for(int i=0;i<nums.length;i++){
if(nums[i]!=0){
temp=nums[i];
nums[i]=nums[k];
nums[k]=temp;
k++;
}
}
}
}
class Q674{
public static void main(String[] args){
int [] nums={2,2,2,2};
int len=findLengthOfCLS(nums);
System.out.println(len);
}
public static int findLengthOfLCIS(int[]nums){
if(nums.length==0||nums.length==1){
return nums.length;
}
int maxL=0;
int maxR=0;
int r=0;
int maxCount=1;
for(int i=0;i<nums.length-1;i++){
if(int i=0;i<nums.length-1;i++){
if(nums[i+1]>nums[i]){
count++;
r=i+1;
}else{
l=i+1;
r=i+1;
}
if(count>maxCount){
maxCount=count;
maxL=L;
maxR=r;
}
}
}
System.out.println(maxL+"~"+maxR);
}
}
class Q724{
public int pivotIntdex(int[] nums){
int sum=0;
for(int sum:nums){
sum+=num;
}
int leftSum=0;
int right=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;
}
}
class Q905{
public int[] sortArrayByParity(int[] A){
int left=0;
int right=A.length-1;
while(left<rigth){
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==0){
left++;
right--;
}else if(A[left]%2==0&&A[right]%2==0;){
left++;
}else{
right--;
}
}
return A;
}
}
class Q{
public boolean canThreePartsEqualSum(int[] A){
int sum=0;
for(int num:A){
sum+=num;
}
int key=sum/3;
int group=0;
for(int i=0;i<A.length;i++){
key-=A[i];
if(key==0){
group++;
key=sum+3;
}
}
return group==3;
}
}
class Q1295{
public int findNumbers(int[] nums){
int count=0;
for(int i=0;i<nums.length;i++){
if((nums[i]+" ").length()%2==0){
count++
}
}
return count;
}
}
/*
题解
这道题的思想是 用一个for循环来标识三个数中的第一个,再用 right 和 left 两个指针来控制另外两个,在比较的时候,如果大于上一次的则让right-1表示对三个数的和进行缩小,如果小于则让left+1 在这里如果关注比原来的小的情况下,则有可能会丢失一部分数据,一部分可能无法得到实验
*/
class Q{
public int threeSumClosest(int[] nums, int target){
Array.sort(nums);//Array.sort()将数组进行从小到大排序
int result = nums[0] + nums[1] + nums[2];//定义三数之和,因为后面是需要比较的所以直接将result赋值为前三个数之和
for(int i = 0;i < nums.length-2;i++ ){
int left = i+1
int left = right-1;
while(left != right){
int sum = nums[i] + nums[left] + nums[right];
if(Math.abs(sum - tagret)<Math.abs(result - tagret)){
result = sum;//这里指的是如果第二次算的值如果离目标更接近的话,则对将result换成更小的
if(sum > tagret){//如果sum的值大的话就将right后移 表示将sum的值缩小,同理left++表示将sum的值增大,(这里是从小到大排列的)
//虽然我们追求的是result最小,但是如果left不前移的话 会丢失一部分数据,是的一些数据无法得到检验;最后造成答案错误
right--;
}else{
left++;
}
}
}
}
return result;
}
}
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
`import java.util.HashSet;
import java.util.Set;
public class TheLongestString {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 哈希集合,记录每个字符是否出现过
String s = "ccccccccc";
Set<Character> occ = new HashSet<Character>();
int n = s.length();
// 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没有开始移动
int rk = -1, ans = 0;
for (int i = 0; i < n; ++i) {
if (i != 0) {
// 左指针向右移动一格,移除一个字符
occ.remove(s.charAt(i - 1));
}
while (rk + 1 < n && !occ.contains(s.charAt(rk + 1))) {
// 不断地移动右指针
occ.add(s.charAt(rk + 1));
++rk;
}
// 第 i 到 rk 个字符是一个极长的无重复字符子串
ans = Math.max(ans, rk - i + 1);
}
System.out.println(ans);
}
}
`