package jz. bm ; import java. lang. reflect. Array ;
import java. util. ArrayList ;
import java. util. Arrays ;
import java. util. HashMap ;
import java. util. HashSet ; public class bm5 { public int [ ] twoSum ( int [ ] numbers, int target) { int [ ] res = new int [ 2 ] ; HashMap < Integer , Integer > map = new HashMap < > ( ) ; for ( int i = 0 ; i < numbers. length; i++ ) { if ( map. containsKey ( target - numbers[ i] ) ) { res[ 0 ] = map. get ( target - numbers[ i] ) + 1 ; res[ 1 ] = i + 1 ; return res; } else { map. put ( numbers[ i] , i) ; } } return res; } public int MoreThanHalfNum_Solution ( int [ ] array) { HashMap < Integer , Integer > map = new HashMap < > ( ) ; for ( int i = 0 ; i < array. length; i++ ) { if ( map. containsKey ( array[ i] ) ) { map. put ( array[ i] , map. get ( array[ i] ) + 1 ) ; } else { map. put ( array[ i] , 1 ) ; } if ( map. get ( array[ i] ) > array. length / 2 ) { return array[ i] ; } } return array[ 0 ] ; } public int [ ] FindNumsAppearOnce ( int [ ] array) { int [ ] res = new int [ 2 ] ; HashMap < Integer , Integer > map = new HashMap < > ( ) ; for ( int k : array) { if ( map. containsKey ( k) ) { map. put ( k, 2 ) ; } else { map. put ( k, 1 ) ; } } ArrayList < Integer > list = new ArrayList < > ( ) ; for ( int j : array) { if ( map. get ( j) == 1 ) { list. add ( j) ; } } res[ 0 ] = Math . min ( list. get ( 0 ) , list. get ( 1 ) ) ; res[ 1 ] = Math . max ( list. get ( 0 ) , list. get ( 1 ) ) ; return res; } public int minNumberDisappeared ( int [ ] nums) { Arrays . sort ( nums) ; HashMap < Integer , Integer > map = new HashMap < > ( ) ; for ( int i = 0 ; i < nums. length; i++ ) { map. put ( nums[ i] , i) ; } for ( int i = 1 ; i < Integer . MAX_VALUE ; i++ ) { if ( ! map. containsKey ( i) ) { return i; } } return - 1 ; } public ArrayList < ArrayList < Integer > > threeSum ( int [ ] num) { ArrayList < ArrayList < Integer > > lists = new ArrayList < > ( ) ; Arrays . sort ( num) ; HashMap < Integer , Integer > map = new HashMap < > ( ) ; for ( int i = 0 ; i < num. length; i++ ) { map. put ( num[ i] , i) ; } int a, b, c; for ( int i = 0 ; i < num. length; i = map. get ( a) + 1 ) { a = num[ i] ; for ( int j = i + 1 ; j < num. length; j = map. get ( b) + 1 ) { b = num[ j] ; c = - a - b; if ( map. containsKey ( c) && map. get ( c) > j) { ArrayList < Integer > list = new ArrayList < > ( ) ; list. add ( a) ; list. add ( b) ; list. add ( c) ; lists. add ( list) ; } } } return lists; }
}