思路:先排序,维护全局最小差,遍历排序后的数组更新最小差。
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 求最小差值
* @param a int整型一维数组 数组a
* @return int整型
*/
public int minDifference (int[] a) {
// write code here
Arrays.sort(a);
int res = 0x7fffffff;
for(int i = 0; i < a.length - 1; ++i){
res = Math.min(a[i + 1] - a[i], res);
}
return res;
}
} 第一题 TreeIV https://ac.nowcoder.com/acm/contest/9004/B
思路: 逐层等差数列求和,注意整数越界的问题。
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param n long长整型 表示标准完全二叉树的结点个数
* @return long长整型
*/
public long tree4 (long n) {
// write code here
if(n <= 0){return 0;}
long res = 0, i = 1, layer = 1;
while(i <= n){
if((i << 1) - 1 <= n){
res = (res + (layer * (3 * i - 1) * i / 2)) % 998244353;
i <<= 1;
}else{
for(; i <= n;++i){
res = (res + i * layer) % 998244353;
}
}
++layer;
}
return res;
}
} import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 返回最大和的字符串
* @param x string字符串 即题目描述中所给字符串
* @param k int整型 即题目描述中所给的k
* @return string字符串
*/
public String Maxsumforknumers (String x, int k) {
// write code here
char[] arr = x.toCharArray();
int len = arr.length;
Arrays.sort(arr);
String newX = new String(arr);
String temp = newX.substring(k - 1, len);
int carry = 0;
for(int i = 0; i < k - 1; ++i){
carry += arr[i] - '0';
}
char[] charRes = temp.toCharArray();
int maxLen = charRes.length;
for(int i = 0; i < maxLen && carry > 0; ++i){
int digit = carry + charRes[i] - '0';
carry = digit / 10;
charRes[i] = (char)(digit % 10 + '0');
}
StringBuilder sb = new StringBuilder(new String(charRes));
while(carry > 0){
sb.append((char)(carry % 10 + '0'));
carry /= 10;
}
return sb.reverse().toString();
}
} 
京公网安备 11010502036488号