全部评论
更正一下第三题js解法。。。 readline();
let data = readline().split(' ');
data = data.map(val => parseInt(val));
data.sort((v1, v2) => v1 - v2);
const head = data[0],
tail = data[data.length - 1];
data = data.map(val => Math.abs(val));
let sum = data.reduce((pre, cur) => pre + cur);
if (head > 0 || tail < 0) {
sum -= data[0] * 2;
print(sum);
}else {
print(sum);
}
编程题好难啊
凉凉,编程题不会写
这样要答案有意思嘛!
我前两题编程只拿了20 80,第三题都没来得及做……妈耶
只有第三个过了。。第二个只有90.。 第三题 int main(){ int n; int t[500005]; scanf("%d",&n); int index=-1; //第一个大于等于0数字下标 for(int i=0;i<n;i++){ int x; scanf("%d",&t[i]); } sort(fu,fu+n); long long ans=0; for(int i=0;i<n;i++){ if(t[i]>=0){ index=i; break; } } if(index!=-1){ //有正数情况 ans=t[index]; for(int i=index+1;i<n;i++){ if(i==n-1) ans=t[i]-ans; else ans-=t[i]; } for(int i=0;i<index;i++){ ans-=t[i]; } } else{ //全负数情况 ans=fu[n-1]; for(int i=n-2;i>=0;i--){ ans-=t[i]; } } printf("%lld\n",ans); return 0; }
import java.util.Arrays; import java.util.Scanner; public class Test2 { public static void main(String[] args) {
Scanner scan = new Scanner(System.in); int n=scan.nextInt(); int k=scan.nextInt(); int[] arr=new int[n]; for(int i=0;i<n;i++){
arr[i]=scan.nextInt();
}
Arrays.sort(arr); int[] b=new int[n]; for(int i=1;i<n;i++){
b[i]=arr[i]-arr[i-1];
} int sum=0,num=0; for(int i=n-1;i>0;i--){
sum+=b[i]*(n-i); if(sum>k){
num++;
sum=+b[i]*(n-i);
}
} if(sum!=0){
num++;
}
System.out.println(num);
}
}
import java.util.Scanner; public class Test3 { public static void main(String[] args) {
Scanner scan=new Scanner(System.in); int n = scan.nextInt(); long[] arr=new long[n]; int a1=0,a2=0,a3=0; long min=2147483647; long sum=0; for(int i=0;i<n;i++){
arr[i]=scan.nextLong(); if(arr[i]>0){
a1=1;
}else if(arr[i]<0){
a2=1;
}else if(arr[i]==0){
a3=1;
} if(min>arr[i]){
min=arr[i];
}
sum=sum+Math.abs(arr[i]);
} if(a3==1){
System.out.println(sum); return;
} if(a1!=1||a2!=1){
sum=sum-Math.abs(min*2);
}
System.out.println(sum);
}
}
相关推荐
投递华为等公司10个岗位 >
点赞 评论 收藏
分享
10-10 17:25
西安电子科技大学 C++ 点赞 评论 收藏
分享