算法:关于“旋转”

1 旋转数组

reverse(nums,0,n-k-1);
reverse(nums,n-k,n-1);
reverse(nums,0,n-1);

2 旋转字符串

return A.length() == B.length() && (A + A).contains(B)

3 旋转链表

class Solution {
    public ListNode rotateRight(ListNode head, int k) {
        if(head == null || head.next == null) return head;
        ListNode pHead = head;
        int i = 0;
        while(pHead.next != null  && i < k ) {
            pHead = pHead.next;
            i++;
        } 
        if(i < k) {
            k = k%(i+1);
            i=0;
            pHead = head;
            while(pHead.next != null  && i < k ) {
                pHead = pHead.next;
                i++;
            }
        } 

        ListNode rk = head;
        while(pHead.next!= null) {
            pHead = pHead.next;
            rk = rk.next;
        }
        if(rk.next == null) return head;
        else {
            pHead.next = head;
            head = rk.next;
            rk.next = null;
        }
        return head;
    }
}
全部评论

相关推荐

2024-12-26 13:00
太原理工大学 Java
会飞的猿:简历没啥大问题啊,感觉是缺少了实习经历。多投投先找个中小厂过渡一下吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务