力扣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[]{};
}