1.数组中的最多的元素
public static Integer moreElement(int [] nums){
Map<Integer,Integer> numsMap = new HashMap<>();
for(int i = 0;i<nums.length;i++){
Integer count = numsMap.get(nums[i]);
if(count == null){
numsMap.put(nums[i],1);
}else{
count++;
numsMap.put(nums[i],count);
}
}
int maxCount = 0;
int checkedNum = 0;
for(Map.Entry<Integer,Integer> entry: numsMap.entrySet()){
if (entry.getValue() >maxCount) {
checkedNum = entry.getKey();
maxCount = entry.getValue();
}
}
return checkedNum;
}
2.旋转数据
题目:
/**
* 数组轮转
* 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
* <p>
* <p>
* 示例 1:
* <p>
* 输入: nums = [1,2,3,4,5,6,7], k = 3
* 输出: [5,6,7,1,2,3,4]
* 解释:
* 向右轮转 1 步: [7,1,2,3,4,5,6]
* 向右轮转 2 步: [6,7,1,2,3,4,5]
* 向右轮转 3 步: [5,6,7,1,2,3,4]
* 示例 2:
* <p>
* 输入:nums = [-1,-100,3,99], k = 2
* 输出:[3,99,-1,-100]
* 解释:
* 向右轮转 1 步: [99,-1,-100,3]
* 向右轮转 2 步: [3,99,-1,-100]
*/
代码:
private static void roteArray3(int[] nums,int k){
int[] newArr = new int[nums.length];
for(int i =0;i< nums.length;i++){
newArr[(i+k)% nums.length] = nums[i];
}
System.arraycopy(newArr,0,nums,0 ,nums.length);
}