- 删除排序数组中的重复项
只要nums[i]==nums[j]就跳过重复项(利用j++)
如果不等就把j的值赋给i+1,然后i++
class Solution {
public int removeDuplicates(int[] nums) {
int i=0,j=1;
while(j<nums.length){
if(nums[i]==nums[j]){
j++;
}else{
i++;
nums[i]=nums[j];
j++;
}
}return i+1;
}
}
2.快慢指针
剑指 Offer 22. 链表中倒数第k个节点
解题思想:快指针先走k步,然后快慢指针同时走
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* getKthFromEnd(struct ListNode* head, int k){
struct ListNode*i=head;
struct ListNode*j=head;
int count=0;
while(count<k){
j=j->next;
count++;
}
while(j!=NULL){
i=i->next;
j=j->next;
}
return i;
}