数组的遍历
package cn.itcast.zr.problem;
import java.util.Scanner;
import javax.naming.directory.SearchControls;
public class Solution {
public static int findMaxConsecutiveOnes(int[] nums) {
int maxCount = 0, count = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] == 1) {
count++;
} else {
maxCount = Math.max(maxCount, count);
count = 0;
}
}
maxCount = Math.max(maxCount, count);
return maxCount;
}
public static void main(String[] args) {
System.out.println("请输入几个书并用逗号隔开:");
Scanner sc = new Scanner(System.in);
String string=sc.next().toString();
String[] arr=string.split(",");
int[] b=new int[arr.length];
for(int j=0;j<b.length;j++) {
b[j]=Integer.parseInt(arr[j]);
System.out.print(b[j]+" ");
}
System.out.println();
int total=findMaxConsecutiveOnes(b);
System.out.println(total);
}
}
import java.util.Scanner;
public class solution {
public static int findPoisonedDuration(int[] timeSeries, int duration) {
int right=timeSeries[0]+duration-1;
int res=0;
for(int i=1;i<timeSeries.length;i++) {
if(timeSeries[i]>right) {
res+=duration;
right=timeSeries[i]+duration-1;
continue;
}
res+=timeSeries[i]-timeSeries[i-1];
right=timeSeries[i]+duration-1;
}
res+=duration;
System.out.println(res);
return duration;
}
public static void main(String[] args) {
System.out.println("输入数组长度");
Scanner scanner=new Scanner(System.in);
int m=scanner.nextInt();
int timeSeries[]=new int[m];
System.out.println("输入数组");
for(int i=0;i<timeSeries.length;i++) {
timeSeries[i]=scanner.nextInt();
}
int duration=0;
System.out.println("输入持续时间");
duration=scanner.nextInt();
findPoisonedDuration(timeSeries,duration);
}
}
- 414
找数组次大值的做法是使用两个变量a和b分别存储遍历过程中的最大值和次大值。
同理,可以使用a、b、c三个变量来指定最大值,次大值,第三大值。
从前往后遍历nums,假设当前元素为x,对是否更新三者进行分情况讨论
1.x>a,说明最大值被更新,将原本的 最大值 和 次大值 往后顺延为 次大值 和 第三大值 ,并用 x更新 a;
2.x<a且x>b,说明次大值被更新,将原本的 次大值 往后顺延为 第三大值,并用x更新b;
3.x<b且x>c,说明第三大值被更新,使用x更新c。
public class Solution {
public static int thirdMax(int[] nums) {
long a = Long.MIN_VALUE, b = Long.MIN_VALUE, c = Long.MIN_VALUE;
for (long num : nums) {
if (num > a) {
c = b;
b = a;
a = num;
} else if (a > num && num > b) {
c = b;
b = num;
} else if (b > num && num > c) {
c = num;
}
}
return c == Long.MIN_VALUE ? (int) a : (int) c;
}
public static void main(String[] args) {
int nums[]= {0,1,2,2,3,4,4,5};
int c=thirdMax(nums);
System.out.println(c);
}
}
import java.util.Iterator;
class Solution {
public static int maximumProduct(int[] nums) {
for (int i = nums.length - 1; i > 0; i--)
{
for (int j = 0; j < i; j++)
{
if (nums[j] > nums[j+1])
{
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
System.out.println
(Math.max
(nums[0] * nums[1] * nums[nums.length - 1], nums[nums.length - 3] * nums[nums.length - 2] * nums[nums.length - 1]));
return Math.max
(nums[0] * nums[1] * nums[nums.length - 1], nums[nums.length - 3] * nums[nums.length - 2] * nums[nums.length - 1]);
}
public static void main(String[] args) {
int nums[]= {-100,-2,-3,1};
maximumProduct(nums);
}
}```