数组的遍历
414.第三大的数
题解:
class Solution {
public int thirdMax(int[] nums) {
TreeSet<Integer>treeSet = new TreeSet<Integer>();
//生成一个TreeSet对象,存储有序唯一整数
for (int num : nums){//遍历数组
treeSet.add(num);//将数组中的整数加到TreeSet对象中
if (treeSet.size()>3){
treeSet.remove(treeSet.first());
//如果TreeSet对象数量大于3,将最小的数移除
}
}
return treeSet.size() == 3 ? treeSet.first() : treeSet.last();
//如果TreeSet的大小等于3,则返回最小的数也就是第三大的数;如果小于3则返回最大的数
}
}
Tips:Java TreeSet集合详解-CSDN博客
628.三个数的最大乘积
题解:
class Solution {
public int maximumProduct(int[] nums) {
Arrays.sort(nums);
int n = nums.length;
return Math.max(nums[0]*nums[1]*nums[2],nums[n-1]*nums[n-2]*nums[n-3]);
}
}
/*先对数组进行排序
排序后判断如何最大发现有三种可能情况
1.都为正数时或都为负数时,最大的三个数相乘最大
有正有负:(1)乘积最大值为排序数组最后三个数相乘
(2)乘积最大值为排序数组前两个负数与数组最后一个正数相乘
最后总结为:max(排序数组最后三个数相乘,排序数组前两个负数与数组最后一个正数相乘)
*/
88.合并两个有序数组
题解:
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int tail = nums1.length - 1;
int m1 = m - 1;
int n1 = n - 1;
while (n1 >= 0) {
if (m1 < 0 || nums1[m1] <= nums2[n1]) {
nums1[tail--] = nums2[n1--];
} else {
nums1[tail--] = nums1[m1--];
}
}
}
}