数组的遍历
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) ;
}
} ```