数组的遍历
414.第三大的数
题解:
java">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.三个数的最大乘积
题解:
java">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.合并两个有序数组
题解:
java">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--];}}}
}