安全プランを証明する:22-25レコードを

入力されたリンクリスト、リンクリストの出力最後から二番目のノードk。ほとんどの人々の習慣を満たすために、この質問は、ノードのリストの最後にある最後から二番目のノードであること、1からカウント。例えば、リンクされたリストは、6つのノードを有し、ノードがゼロからスタート、その値が順次1,2,3,4,5,6です。ノードのリストは、第3のノード4の逆数です。

例:

リストが与えられる:1-> 2-> 3-> 4-> 5、及びk = 2。

結果のリストの4-> 5。

アイデア:素早く頭へのポインタをポインタをスピードアップするために一緒に来て、その後、高速のポインタkのステップを行って、その後、ゆっくりとポインタが答えです。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode getKthFromEnd(ListNode head, int k) {
        ListNode former = head, latter = head;
        for(int i = 0; i < k; i++)
            former = former.next;
        while(former != null) {
            former = former.next;
            latter = latter.next;
        }
        return latter;
    }
}

関数の定義、リストの先頭の入力ノード、およびリストの後にヘッドノードリストの出力反転を反転します。

 

例:

入力:1-> 2-> 3-> 4- > 5-> NULL
出力:5-> 4-> 3-> 2- > 1-> NULL
 

制限事項:

0 <=ノードの数<= 5000

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
	public ListNode reverseList(ListNode head) {
        //前一个节点
		ListNode pre = null;
        //当前处理节点
		ListNode cur = head;
        //记录后一个节点用
		ListNode tmp = null;
        
		while(cur!=null) {
			//记录当前节点的下一个节点
			tmp = cur.next;
			//然后将当前节点指向pre
			cur.next = pre;
			//pre和cur节点都前进一位
			pre = cur;
			cur = tmp;
		}
		return pre;
	}
}

リストの2つの昇順を入力し、二つのリストをマージして、新しいノードのリストがまだの昇順です。

例1:

入力:1-> 2-> 4、1-> 3-> 4
出力:1-> 1-> 2-> 3-> 4-> 4つ
の制限:

0 <=鎖長<= 1000

アイデア:マージリスト。同様のアイデアや配列。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        ListNode ans=new ListNode(-1);
        ListNode temp=ans;
        while(l1!=null && l2!=null){
            if(l1.val>l2.val){
                ans.next=l2;
                l2=l2.next;
            }else{
                ans.next=l1;
                l1=l1.next;
            }
            ans=ans.next;
        }
        if(l1!=null)ans.next=l1;
        if(l2!=null)ans.next=l2;
        return temp.next;
    }
}

 

公開された623元の記事 ウォンの賞賛10000 + ビュー154万+

おすすめ

転載: blog.csdn.net/hebtu666/article/details/104758590