当前位置:网站首页>Liste des liens (simple)
Liste des liens (simple)
2022-07-05 13:49:00 【Anna et son carnet】
Un doigt d'épée. Offer 06. Imprimer la liste de liens de bout en bout
Un doigt d'épée. Offer 24. Inverser la liste des liens
Un doigt d'épée. Offer 35. Copie de listes complexes
Un doigt d'épée. Offer 06. Imprimer la liste de liens de bout en bout - Boucle de force(LeetCode)
Définition d'un tableau à chaîne unique:
/*Definition for singly-linked list:*/
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
Un.:Méthode Stack
class Solution {
public int[] reversePrint(ListNode head) {
Stack<ListNode> stack=new Stack<>();
ListNode cur=head;
while(cur!=null){
stack.push(cur);
cur=cur.next;
}
int[] arr=new int[stack.size()];
for(int i=0;i<arr.length;i++){
arr[i]=stack.pop().val;
}
return arr;
}
}
/** Analyse de la complexité: Complexité temporelle O(N) Complexité spatiale O(N) */
class Solution {
public int[] reversePrint(ListNode head) {
LinkedList<Integer> stack = new LinkedList<Integer>();
while(head != null) {
stack.addLast(head.val);//addLast()La méthode est utilisée dansLinkedList Insérer un élément spécifique à la fin de
head = head.next;
}
int[] res = new int[stack.size()];
for(int i = 0; i < res.length; i++)
res[i] = stack.removeLast();//removeLast()Méthode utilisée pourLinkedListSupprimer le dernier élément
return res;
}
}
/** Analyse de la complexité: Complexité temporelle O(N): Utilisé à la fois à l'intérieur et à l'extérieur de la pile O(N)Temps. Complexité spatiale O(N):Pile auxiliairestackEt tableauxresCo - utilisationO(N)Espace supplémentaire pour */
2.:Méthode récursive
Processus algorithmique:
- Phase récursive : Chaque fois que ça arrive head.next ,Par head == null( C'est - à - dire passer par le noeud de queue de la liste )Condition de terminaison récursive,Retour direct.
- Phase de rétrosuivi : En remontant les couches , Ajouter la valeur actuelle du noeud à la liste ,C'est - à - dire:tmp.add(head.val).
Final,Liste tmp Convertir en tableau res ,Et revenir.
Analyse de la complexité
- Complexité temporelle O(N): Traverser la liste des liens,Récursion N Une fois.
- Complexité spatiale O(N):La récursion du système nécessite l'utilisation de O(N) L'espace de pile de.
class Solution {
ArrayList<Integer> tmp = new ArrayList<Integer>();
public int[] reversePrint(ListNode head) {
recur(head);
int[] res = new int[tmp.size()];
for(int i = 0; i < res.length; i++)
res[i] = tmp.get(i);
return res;
}
void recur(ListNode head) {
if(head == null) return;
recur(head.next);
tmp.add(head.val);
}
}
Trois:
class Solution {
// Temps d'exécution : 0 ms, Dans tous les Java Battu dans la soumission 100.00% Utilisateurs de
// Consommation de mémoire : 39.8 MB, Dans tous les Java Battu dans la soumission 100.00% Utilisateurs de
// N'utilisez pas la pile,Pas de récursion, Deux scans de toute façon , Pourquoi allouer plus d'espace ?
public static int[] reversePrint(ListNode head) {
ListNode node = head;
int count = 0;
while (node != null) {
++count;
node = node.next;
}
int[] nums = new int[count];
node = head;
for (int i = count - 1; i >= 0; --i) {
nums[i] = node.val;
node = node.next;
}
return nums;
}
}
Un doigt d'épée. Offer 24. Inverser la liste des liens - Boucle de force(LeetCode)
Un.:Itération
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */
class Solution {
public ListNode reverseList(ListNode head) {
if(head==null || head.next==null) return head;
ListNode pre=null;
ListNode cur=head;
ListNode tmp=null;
while(cur!=null){
tmp=cur.next;// Mettre en scène les noeuds suivants cur.next
cur.next=pre;// Modifier next Les références pointent vers
pre=cur;// pre Provisoire cur
cur=tmp;// cur Accéder au noeud suivant
}
return pre;
}
}
2.:Récursion
class Solution {
public ListNode reverseList(ListNode head) {
return recur(head, null); // Appelle récursive et renvoie
}
private ListNode recur(ListNode cur, ListNode pre) {
if (cur == null){
return pre; // Conditions de résiliation
}
ListNode res = recur(cur.next, cur); // Noeud successeur récursif
cur.next = pre; // Modifier la référence du noeud pour pointer vers
return res; // Renvoie le noeud d'en - tête de la liste inversée
}
}
Un doigt d'épée. Offer 35. Copie de listes complexes - Boucle de force(LeetCode)
Un.:Table de hachage
/* // Definition for a Node. class Node { int val; Node next; Node random; public Node(int val) { this.val = val; this.next = null; this.random = null; } } */
class Solution {
public Node copyRandomList(Node head) {
Map<Node, Node> m = new HashMap<>();
Node p = head;
while(head != null) {
Node t = new Node(head.val);
m.put(head, t);
head = head.next;
}
head = p;
// Selon la liste originale , Trouver une table de hachage pour relier une nouvelle liste liée
while(head != null) {
Node n = head.next; // Le noeud suivant du noeud original
Node r = head.random;// Noeud d'origine noeud aléatoire
//Nouveau noeudnext Pointez vers le nouveau noeud suivant
m.get(head).next = m.get(n);
//Définir le nouveau noeudrandomLes noeuds pointent vers
m.get(head).random = m.get(r);
head = head.next;
}
return m.get(p);
}
}
class Solution {
public Node copyRandomList(Node head) {
if(head == null) return null;
Node cur = head;
Map<Node, Node> map = new HashMap<>();
//Copier les noeuds,Et de créer “Noeud original -> Nouveau noeud” De Map Cartographie
while(cur != null) {
map.put(cur, new Node(cur.val));
cur = cur.next;
}
cur = head;
//Pour construire une nouvelle liste de liens next Et random Pointage
while(cur != null) {
map.get(cur).next = map.get(cur.next);
map.get(cur).random = map.get(cur.random);
cur = cur.next;
}
//Renvoie le noeud d'en - tête de la nouvelle liste liée
return map.get(head);
}
}
边栏推荐
- Internal JSON-RPC error. {"code":-32000, "message": "execution reverted"} solve the error
- 【华南理工大学】考研初试复试资料分享
- "Baidu Cup" CTF competition in September, web:upload
- kafaka 日志收集
- 【 script secret pour l'utilisation de MySQL 】 un jeu en ligne sur l'heure et le type de date de MySQL et les fonctions d'exploitation connexes (3)
- Zhubo Huangyu: it's really bad not to understand these gold frying skills
- Kotlin collaboration uses coroutinecontext to implement the retry logic after a network request fails
- Log4j utilization correlation
- Jetpack compose introduction to mastery
- How to divide a large 'tar' archive file into multiple files of a specific size
猜你喜欢
RK3566添加LED
Win10——轻量级小工具
Primary code audit [no dolls (modification)] assessment
[cloud resources] what software is good for cloud resource security management? Why?
基于微信小程序的订餐系统
French scholars: the explicability of counter attack under optimal transmission theory
Could not set property ‘id‘ of ‘class XX‘ with value ‘XX‘ argument type mismatch 解决办法
Operational research 68 | the latest impact factors in 2022 were officially released. Changes in journals in the field of rapid care
PHP basic syntax
那些考研后才知道的事
随机推荐
内网穿透工具 netapp
uplad_ Labs first three levels
Datapipeline was selected into the 2022 digital intelligence atlas and database development report of China Academy of communications and communications
ZABBIX monitoring
These 18 websites can make your page background cool
restTemplate详解
Selenium crawls Baidu pictures
Solve the problem of invalid uni app configuration page and tabbar
Usage, installation and use of TortoiseSVN
研究生可以不用学英语?只要考研英语或六级分数高!
leetcode 10. Regular expression matching regular expression matching (difficult)
Wechat app payment callback processing method PHP logging method, notes. 2020/5/26
什么叫做信息安全?包含哪些内容?与网络安全有什么区别?
Zibll theme external chain redirection go page beautification tutorial
Address book (linked list implementation)
js 从一个数组对象中取key 和value组成一个新的对象
Solve the problem of "unable to open source file" xx.h "in the custom header file on vs from the source
[server data recovery] a case of RAID5 data recovery stored in a brand of server
法国学者:最优传输理论下对抗攻击可解释性探讨
龙芯派2代烧写PMON和重装系统