第407题:
描述
给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。
该数字按照数位高低进行排列,最高位的数在列表的最前面.
样例 1:
输入:[1,2,3]
输出:[1,2,4]
样例 2:
输入:[9,9,9]
输出:[1,0,0,0]
注意事项:如果此题使用Integer,那么会造成整数溢出越界问题
代码如下:
import java.math.BigInteger;
public class Solution {
/**
* @param digits: a number represented as an array of digits
* @return: the result
*/
public int[] plusOne(int[] digits) {
// write your code here
StringBuffer stringBuffer=new StringBuffer();
for(int i=0;i<digits.length;i++)
{
stringBuffer.append(digits[i]+"");
}
BigInteger bigIntegerValue=new BigInteger(stringBuffer.toString());
BigInteger goalValue=bigIntegerValue.add(BigInteger.ONE);//BigInteger.valueOf(任意整数)放在bigIntegerValue.add()方法里里面 表示加上任意一个数
String goalStr=goalValue+"";
int[] digitArray = new int[goalStr.length()];
for(int i=0;i<goalStr.length();i++)
{
digitArray[i]=goalStr.charAt(i)- '0';
}
return digitArray;
}
}
第479题:
Arrays.sort()
是用于排序数组(如 int[]
, Integer[]
, String[]
)
Collections.sort(list); // 默认升序
list.sort(Comparator.reverseOrder()); // 倒序排序
List |
是 | Collections.sort(list) / list.sort() |
Set |
否 | 转为 List 后排序,再转回 LinkedHashSet |
Queue |
否 | 转为 List 后排序,再重建队列 |
Stack |
否 | 转为 List 后排序,再放回栈 |
Map |
否 | 用 entrySet().stream().sorted() 排序 |
描述
在数组中找到第二大的数.
例1:
输入:[1,3,2,4]
输出:3
例2:
输入:[1,1,2,2]
输出:2
代码如下:
public class Solution {
/**
* @param nums: An integer array
* @return: The second max number in the array.
*/
public int secondMax(int[] nums) {
//如果是Integer数组 可以用Arrays.sort(boxed, Comparator.reverseOrder());直接进行倒序操作 因为默认为升序
//如果为int[]可以可以先进行包装
//第一种方法
Integer[] boxedNumber = Arrays.stream(nums).boxed().toArray(Integer[]::new);
Arrays.sort(boxedNumber, Comparator.reverseOrder());
// write your code here
return boxedNumber[1];
//第二种方法
Arrays.sort(nums);
return nums[nums.length-2];
}
}