二维数组中的查找 找到满足条件的最左下角; 然后往上的二维数组进行二层循环遍历;
public class Solution {
public boolean Find ( int target, int [ ] [ ] array) {
int hight = array. length;
int wide = array[ 0 ] . length;
if ( hight == 0 || wide == 0 ) {
return false ;
}
int endi = 0 ;
while ( endi < hight && array[ endi] [ 0 ] <= target) {
endi++ ;
}
for ( int i= endi- 1 ; i>= 0 ; i-- ) {
for ( int j= 0 ; j< wide; j++ ) {
if ( array[ i] [ j] == target) {
return true ;
}
if ( array[ i] [ j] > target) {
continue ;
}
}
}
return false ;
}
}
旋转数组的最小数值【注意只经历一次旋转,那么出现转折的那个点,就是答案】
import java. util. ArrayList ;
public class Solution {
public int minNumberInRotateArray ( int [ ] array) {
int min = array[ 0 ] ;
int len = array. length;
for ( int i= 0 ; i< len- 1 ; i++ ) {
if ( array[ i] > array[ i+ 1 ] ) {
min = array[ i+ 1 ] ;
break ;
}
}
return min;
}
}
比较版本号【字符串分割-转义字符;字符数字转成数字】 思路:将字符串版本号按照指定规则分割转成字符串数组; 按照最长字符串数组进行遍历 空缺的用0补 然后依次取出每个字符串数组的值 转成数值类型 最后将两个数值进行比较
import java. util. * ;
public class Solution {
public int compare ( String version1, String version2) {
String [ ] nums1 = version1. split ( "\\." ) ;
String [ ] nums2 = version2. split ( "\\." ) ;
for ( int i= 0 ; i< Math . min ( nums1. length, nums1. length) ; i++ ) {
String str1 = i < nums1. length ? nums1[ i] : "0" ;
String str2 = i < nums2. length ? nums2[ i] : "0" ;
long num1 = 0 ;
for ( int j= 0 ; j< str1. length ( ) ; j++ ) {
num1 = num1* 10 + ( str1. charAt ( j) - '0' ) ;
}
long num2 = 0 ;
for ( int j= 0 ; j< str2. length ( ) ; j++ ) {
num2 = num2* 10 + ( str2. charAt ( j) - '0' ) ;
}
if ( num1 > num2) {
return 1 ;
}
if ( num2 > num1) {
return - 1 ;
}
}
return 0 ;
}
}
寻找峰值 思路:根据峰值所在位置进行划分; 在第一个; 在最后一个; 在中间; 特别要注意,数组长度为一的情况。
import java. util. * ;
public class Solution {
public int findPeakElement ( int [ ] nums) {
int idx = 0 ;
if ( nums. length == 1 ) {
return idx;
}
if ( nums. length == 2 && nums[ 0 ] > nums[ 1 ] ) {
return idx;
}
if ( nums[ nums. length- 1 ] > nums[ nums. length- 2 ] ) {
return nums. length- 1 ;
}
for ( int i= 1 ; i< nums. length- 2 ; i++ ) {
if ( nums[ i- 1 ] < nums[ i] && nums[ i+ 1 ] < nums[ i] ) {
idx = i;
}
}
return idx;
}
}