力扣26 快慢指针 去掉重复元素 数组
public int removeDuplicates ( int [ ] nums) { int slow = 0 ; int fast = 1 ; int count = 0 ; if ( nums. length == 1 ) { return 1 ; } else { while ( fast < nums. length) { if ( nums[ slow] == nums[ fast] ) { fast++ ; } else { slow++ ; nums[ slow] = nums[ fast] ; fast++ ; } } } return slow+ 1 ; }
力扣83 快慢指针向后遍历 去掉重复元素(链表)
public ListNode deleteDuplicates ( ListNode head) { if ( head== null || head. next== null ) { return head; } else { ListNode slow = head; ListNode fast = head. next; while ( fast != null ) { if ( slow. val == fast. val) { slow. next = fast. next; fast = fast. next; } else { slow = fast; fast = fast. next; } } return head; } }
力扣 27 快慢指针向后遍历 去掉val元素
public int removeElement ( int [ ] nums, int val) { int fast = 0 , slow = 0 ; while ( fast < nums. length) { if ( nums[ fast] != val) { nums[ slow] = nums[ fast] ; slow++ ; } fast++ ; } return slow; }
力扣283 快慢指针向后遍历 除零
public void moveZeroes ( int [ ] nums) { int length = nums. length; int slow = 0 , fast = 0 ; while ( fast < length) { if ( nums[ fast] == 0 ) { fast++ ; } else { nums[ slow] = nums[ fast] ; slow++ ; fast++ ; } } for ( int i= slow; i< length; i++ ) { nums[ i] = 0 ; } }
力扣 344 左右向中间简单交换
public void reverseString ( char [ ] s) { for ( int i = 0 ; i < s. length / 2 ; i++ ) { char temp = s[ i] ; s[ i] = s[ s. length - 1 - i] ; s[ s. length - 1 - i] = temp; } }
力扣1 HashMap
public int [ ] twoSum ( int [ ] nums, int target) { HashMap < Integer , Integer > map = new HashMap < Integer , Integer > ( ) ; for ( int i= 0 ; i< nums. length; i++ ) { int need = target - nums[ i] ; if ( map. containsKey ( need) ) { return new int [ ] { i, map. get ( need) } ; } else { map. put ( nums[ i] , i) ; } } return new int [ ] { } ; }