算法--2023.1.22

1.力扣287--寻找重复数

class Solution {
    //环形链表2的变形:数组游标是指针,数组中的元素值是该节点指向下一个节点的指针
    //该问题可以转化为找到环的入口
    public int findDuplicate(int[] nums) {
        int fast = nums[0], slow = nums[0];
        //快慢指针判断有换并找到第一次相遇的位置
        while(nums[fast]!=0){
            slow = nums[slow];
            fast = nums[nums[fast]];
            if(slow == fast){
                break;
            }
            //System.out.println(fast);
        }
        //一个指针从头出发,另一个指针从相遇位置出发找到环的入口
        int head = nums[0];
        while(head!=fast){
            head = nums[head];
            fast = nums[fast];
        }
        return head;
    }
}

2.力扣300--最长递增子序列

  

posted @ 2023-01-23 11:48  lyjps  阅读(20)  评论(0)    收藏  举报