第一题:912. 排序数组
不花里胡哨直接上。
class Solution {
public int[] sortArray(int[] arr) {
Arrays.sort(arr);
return arr;
}}
第二题:169. 多数元素
class Solution {
// 摩尔投票法
public int majorityElement(int[] nums) {
int res = 0, count = 0;
for (int i = 0; i < nums.length; i++) {
if (count == 0) {
res = nums[i];
count++;
}
else {
if (res == nums[i]) count++;
else count--;
}
}
return res;
}
}
第三题:217. 存在重复元素
class Solution {
public boolean containsDuplicate(int[] nums) {
//比较相邻的元素是否相同即可
Arrays.sort(nums);
for(int i=0;i<nums.length-1;i++){
if(nums[i]==nums[i+1]){
return true;
}
}
return false;
}}
第四题:164. 最大间距
class Solution {
public int maximumGap(int[] nums) {
Arrays.sort(nums);
int max=0;
if(nums.length==1){return 0;}
for(int i=0;i<nums.length-1;i++){
int count=nums[i+1]-nums[i];//一组一组赋值一组一组的比
max=max>count?max:count;
}
return max;
}
}
第五题:905. 按奇偶排序数组
class Solution {
public int[] sortArrayByParity(int[] nums) {
int len=nums.length;
int []arr=new int[len];
for(int i=0,j=0,k=0;i<len;i++){//奇数从后面加,偶数从前加
if(nums[i]%2==0){
arr[j]=nums[i];
j++;
}
else {
arr[len-1-k]=nums[i];
k++;
}
}
return arr;
}
}
第六题:539. 最小时间差
这题不会....看评论区的
class Solution {
public int findMinDifference(List<String> timePoints) {
int n=timePoints.size();
if(n>1440){
return 0;
}
int[] times=new int[n];
// 将时间全部转化为分钟
for(int i=0;i<n;i++){
String m=timePoints.get(i).substring(0,2);
String s=timePoints.get(i).substring(3,5);
times[i]=Integer.parseInt(m)*60+Integer.parseInt(s);
}
int result=Integer.MAX_VALUE;
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
// 两个时间最小时间
int time=Math.min(Math.abs(times[i]-times[j]),Math.abs(Math.abs(times[i]-times[j])-1440));
// 所有时间最小差
result=Math.min(time,result);
}
}
return result;
}
}
第七题:976. 三角形的最大周长
class Solution {//贪心算法
public int largestPerimeter(int[] nums) {
Arrays.sort(nums);
for(int i = nums.length-1; i>=2;i--){
if(nums[i-2] + nums[i-1] > nums[i])
return (nums[i-2]+nums[i-1]+nums[i]);
}
return 0;
}
}
第八题:881. 救生艇
class Solution {
public int numRescueBoats(int[] people, int limit) {
Arrays.sort(people);
int n = people.length;
int i = 0, j = n - 1;
while (i < j) {
if (people[j] + people[i] <= limit) {
i++;//成对走
}
j--;
}//最多次数减去成对次数
return n - i;
}
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_60719453/article/details/121582034
内容来源于网络,如有侵权,请联系作者删除!