Demostrar la oferta de seguridad: 22-25 registros

Introducir una lista enlazada, el ligado lista de salida penúltimo nodo k. Con el fin de cumplir con el hábito de la mayoría de la gente, esta cuestión cuenta a partir de 1, que es el final de la lista de nodos es el nodo penúltima. Por ejemplo, una lista enlazada tiene seis nodos, los nodos de empezar de cero, sus valores son secuencialmente 1,2,3,4,5,6. La lista de nodos es el valor recíproco de la tercer nodo 4.

Ejemplo:

Dada una lista: 1-> 2-> 3-> 4-> 5, y k = 2.

La lista resultante 4-> 5.

Ideas: van pasos puntero k rápidas, a continuación, se unen para acelerar el puntero rápidamente puntero a la cabeza, y luego puntero lenta es la respuesta.

/**
 * 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;
    }
}

Definición de una función, el nodo de entrada de una cabeza de la lista, y la inversión de la inversión de la salida de la lista de nodos cabeza después de la lista.

 

Ejemplo:

Entrada: 1-> 2-> 3-> 4- > 5-> NULL
salida: 5-> 4-> 3-> 2- > 1-> NULL
 

restricciones:

0 <= el número de nodos <= 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;
	}
}

Introduzca la orden dos ascendente de la lista, fusionar las dos listas y la lista del nuevo nodo se sigue el orden de ascendente.

Ejemplo 1:

Entrada: 1-> 2-> 4, 1-> 3-> 4
de salida: 1-> 1-> 2-> 3-> 4-> 4
límites:

0 <= longitud de la cadena <= 1000

Ideas: una lista de combinación. ideas y matrices similares.

/**
 * 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;
    }
}

 

Publicados 623 artículos originales · ganado elogios 10000 + · vistas 1,54 millones +

Supongo que te gusta

Origin blog.csdn.net/hebtu666/article/details/104758590
Recomendado
Clasificación