首页 > 编程知识 正文

看三张牌抢庄牛牛心得(牛牛有没有两种算法)

时间:2023-05-03 14:03:55 阅读:73815 作者:559

import java.util.*; 公共类解决方案{/* * *返回两次操作后数组元素之和的最小值

*@paramnums int整数一维数组您需要操作的数组

*@returnlong长整数*/

publiclongminimumvalueafterdispel (int [ ] nums ) ) {//write代码here

Arrays.sort(NUMS ); long sum=0; //记录整个数组的和

长最大=0; //记录可减去的最大值

for(intj=0; Jj

sum=nums[j]; int index1=j; int index2=j; int index3=j; for(intI=0; i=j; I () while )索引10 nums [ index1-1]=nums [ j ]-nums [ I ] ) )

索引1-- -;

} while (index2inums [ index2-1]=nums [ j ]-nums [ I ] ) )

索引2-- -;

}while(index3nums.length(long ) nums[index3] ) long (nums [ I ] nums [ j ] ) {

索引3;

(/)假设减去2次的数为a,b ) a

1.a=nums[j]-nums[i] b=nums[i]

2.a=nums[i] b=nums[j]-nums[i]

3.a=nums[i] b=nums[j]

分段函数的边界:

1 .索引1 I j nums.length实际上索引1大于I时i-index1为负不影响max的计算

2. i index2 j nums.length

3. i j index3 nums.length

第一种情况index1到I的数量只能减去a即nums[j]-nums[i],I到j的数量只能减去b即nums[i],j到最后的数量只能减去a b即nums[j]

第二种情况I到索引2的数量只能减去a即nums[i],索引2到j的数量只能减去b即nums[j]-nums[i],而j到最后的数量是a b即nums[j]

第三种情况I到j的数量为a的nums[i],j到索引3的数量为b的nums[j],从索引3到最后的数量为a b的nums[j] nums[i]*/

longtmp1=(I-index1) (long ) nums [ j ]-nums [ I ] (j-I ) * (long ) nums [ j ] (nums.length-j ) ) ) ) ) long ) nums.length-j longtMP3=(j-I ) (long ) nums ) I ) ) index3-j ) (long ) nums.length-index3) ) )

max=math.max(max,tmp1;

max=math.max(max,tmp2;

max=math.max(max,tmp3 );

}

}返回和最大;

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。