Java SE_07笔记

1.leetCode495
在《英雄联盟》的世界中,
有一个叫 “提莫” 的英雄,
他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。
现在,给出提莫对艾希的攻击时间序列和提莫攻击的中毒持续时间,
你需要输出艾希的中毒状态总时长。
你可以认为提莫在给定的时间点进行攻击,并立即使艾希处于中毒状态。

示例1:
输入: [1,4], 2
输出: 4
原因: 在第 1 秒开始时,
提莫开始对艾希进行攻击并使其立即中毒。
中毒状态会维持 2 秒钟,直到第 2 秒钟结束。
在第 4 秒开始时,提莫再次攻击艾希,
使得艾希获得另外 2 秒的中毒时间。
所以最终输出 4 秒。
示例2:

输入: [1,2], 2
输出: 3
原因: 在第 1 秒开始时,
提莫开始对艾希进行攻击并使其立即中毒。
中毒状态会维持 2 秒钟,直到第 2 秒钟结束。
但是在第 2 秒开始时,提莫再次攻击了已经处于中毒状态的艾希。
由于中毒状态不可叠加,
提莫在第 2 秒开始时的这次攻击会在第 3 秒钟结束。
所以最终输出 3。

[1,4,7] 2  2+2+2=6
[1,3,5] 3  2+2+3=7
如果时间差大于中毒时间		满毒时间
如果时间差小于等于中毒事件	时间差
最后一秒直接加满毒时间
class Demo495{
	public static void main(String args[]){
		int[] timeSerives={1,3,4};
		int duration=2;
		int total=Text(timeSerives,duration);
		System.out.println(total);
	}
	public static int Text(int[] timeSerives,int duration){
		int total=0;
		for(int i=0;i<timeSerives.length-1;i++){	//后面有timeSerives[i+1]故不能超过timeSerives.length-1
			int delt=(timeSerives[i+1]-timeSerives[i]);
			if(delt>duration){	//时间差大于中毒持续时间
				total+=duration;
			}else{
				total+=delt;
			}
		}
		total+=duration;//最后一秒之后都要加时间差
		return total;
	}
}

***2.leetCode905***3种方法
给定一个非负整数数组 A,
返回一个由 A 的所有偶数元素组成的数组,
后面跟 A 的所有奇数元素。
你可以返回满足此条件的任何数组作为答案。
输入:[3,1,2,4]
输出:[2,4,3,1]
输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。

import java.util.Arrays;
class Demo905_1{
	public static void main(String args[]){
		int[] arr={1,2,3,4,5,6};
		arr=Test(arr);
		System.out.println(Arrays.toString(arr));
	}
	public static int[] Test(int[] arr){
	/*	if(arr==null){		//选择排序  判空,可能是一个空数组
			return null;
		}
		for(int i=0;i<arr.length;i++){
			if(arr[i]%2==0){	//可以不写
				continue;
			}
			for(int j=i+1;j<arr.length;j++){
				if(arr[j]%2==0){	//如果后一个是偶数则和前一个换
					int temp=arr[i];
					arr[i]=arr[j];
					arr[j]=temp;
					break;
				}
			}
		}
		return arr;
		*/
	/*	//夹逼排序
		if(arr=null){
		return null;
	}
		int start=0;
		int end=arr.length-1;
		while(start<end){
			if(arr[start]%2==0&&arr[end]%2==0){		//头尾都为偶时 头后移
				start++;
			}
			else if(arr[start]%2==0&&arr[end]%2==1){	//头偶尾奇时 头后移,尾前移
				start++;
				end--;
			}
			else if(arr[start]%2==1&&arr[end]%2==0){	//头奇尾偶时 交换
				int temp;
				temp=arr[start];
				arr[start]=arr[end];
				arr[end]=temp;
			}
			else{				//头尾都为奇时 尾前移
				end--;
			}
		}
		return arr;
		*/
	//插入排序
	if(arr==null){
		return null;
	}
	for(int i=0;i<arr.length;i++){
		if(arr[i]%2==0){
			int e=arr[i];
			int j;	//后面arr[j]要使用,所以定义在外面
			for(int j=i;j>0&&arr[j-1]%2==1;j--){//前面有数子且为奇数
				arr[j]=arr[j-1];	//相当于奇数后移,偶数赋值给之前的奇数的位置
			}
			arr[j]=e;
		}
	}
	return arr;
	}
}

***3、LeetCode169***两种解法
给定一个大小为 n 的数组,找到其中的众数。
众数是指在数组中出现次数大于 n/2 的元素。
你可以假设数组是非空的,并且给定的数组总是存在众数。

示例 1:
输入: [3,2,3]
输出: 3

示例 2:
输入: [2,2,1,1,1,2,2]
输出: 2
import java.util.Arrays;
class Demo169{
	public static void main(String args[]){
		int[] arr={1,2,2,4,2,2};
		int majority;

		majority=majorityElement(arr);
		System.out.println(majority);
	}
	public static int majorityElement(int[] arr){
		Arrays.sort(arr);//对一个数组的所有元素从小到大排序
		int maxCount=0;
		int majority=0;
		for(int i=0;i<arr.length;){
			int count=1;
			for(int j=i+1;j<arr.length;j++){
				if(arr[i]==arr[j]){
					count++;
				}else{
					break;
				}
			}
			if(count>maxCount){
				maxCount=count;
				majority=arr[i];
			}
			i+=count;
			if(i>arr.length/2){
				break;
			}
		}
		return majority;
	}

}
import java.util.Arrays;
class Demo169_2{
	public static void main(String args[]){
	int[] nums={1,2,2,4,2,2};
		int maj;	//定义一个众数
		maj=majorityElement(nums);
		System.out.println(maj);
	}
	public static int majorityElement(int[] nums){
		int maj=nums[0];//先随机取一个值令为maj
		int count=1;//标记这个数字的次数
		for(int i=0;i<nums.length;i++){
			if(nums[i]==maj){	//相等则是同一个数
				count++;
			}else{
				count--;	//不相等时将当前count自减
				if(count==0){
				maj=nums[i];//count为0时则当前众数被后面来的num[i]所替代
				count=1;//此时重新标记count从1开始
				}
			}
		}
		return maj;//返回这一个众数
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值