LeetCode开心刷题十三天——24

习惯就是人生的最大指导

——休谟

24. Swap Nodes in Pairs

Medium

1209107FavoriteShare

Given a linked list, swap every two adjacent nodes and return its head.

You may not modify the values in the list‘s nodes, only nodes itself may be changed.

防止用增加值,存储前后变量只进行值交换,而不处理节点顺序指针的投机行为

Example:

Given 1->2->3->4, you should return the list as 2->1->4->3.

额外收获:每次刷题都会发现自己一些基本的概念没有弄清,&是其中之一&特别容易带给我的误解是取地址符号,其实在某些情况&表示是别名eg:int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名说人话:int 本小可爱;int &小仙女=本小可爱;本小可爱其实就是小仙女,这是一个人,但是名字只能由一个所以平时大家叫我小可爱,但如果叫小仙女也是说我,而且因为本身就是一个变量(人),所以操作都是共荣损的,有人给小仙女送花=给小可爱送花Opps,I suddenly notice I didn‘t write in English,My faultC11 is really a magically improve than C++ ,especially the auto.It changes this complex questioninto the simple one.It use a auxiliary variable to change the node of list
#include <iostream>
#include<vector>
#include<iostream>
#include<string>
#include<stdio.h>
#include<string.h>
#include<iomanip>
#include<vector>
#include<list>
#include<queue>
#include<algorithm>
#include<stack>
#include<map>
using namespace std;
struct ListNode {
      int val;
      ListNode *next;
      ListNode(int x) : val(x), next(NULL) {}
  };

class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        if(!head||!head->next) return head;
        ListNode d(0);
        d.next=head;
        head=&d;
        //if we want some conditions exist directly use it,if not use !
        while(head&&head->next&&head->next->next)
        {
            auto n1=head->next;
            auto n2=n1->next;

            n1->next=n2->next;
            n2->next=n1;
            head->next=n2;
            head=n1;

        }
        return d.next;

    }
};
int main()
{
    ListNode a(10);
    ListNode b(20);
    ListNode c(30);
    ListNode d(70);
    Solution s;
    a.next=&b;
    b.next=&c;
    c.next=&d;
    ListNode *head=&a;
//    while(head)
//    {
//        cout<<head->val<<endl;
//        head=head->next;
//    }
    ListNode* res=NULL;
    res=s.swapPairs(head);
    while(res)
    {
        cout<<res->val<<endl;
        res=res->next;
    }
    return 0;
}

我必须要用中文表达下我的兴奋之情:两个方面,学习上和心理上

学习:

我很久之情一直不懂引用具体的含义,有幸今天在这里面用了很多,搞懂了我之前认为的大boss问题 ListNode *p=&a;类似这样是指ListNode类型的指针变量指向a所在的地址,我们知道,指针是按地址来进行索引的。&这里是取地址,把a所在的地址赋值p。并不是引用,引用也是一种我不熟练的知识

知道了如何构建ListNode链表结构,上下节点之间该怎么连接,怎样输出链表

膜拜C11的神奇性能,auto变量简直无敌,给交换提供了难以想象的方便

可以进步的地方:

把ListNode值改成可以输入的

对比C++ python感受

心态:

我最近特别希望进入努力的状态,真的每天都有新的感悟和收获。昨天的感悟是与其抱怨不如行动,因为昨天抱怨了很久,所以晚上睡得晚,我就想要把这时间用来学习多好,今天则是很紧张,其实这是不可避免的,因为我在强迫自己提速,我要求自己快速做事,动作太快人自然就会焦虑,我一焦虑睡眠就差强人意,我今天已经很晚了还在学,又烦躁又焦虑就开始看搞笑视频,看到最后我想倒头就睡但是发现睡不着,胃也不舒服,情绪不要太亢奋,最好能保持一个比较平静的阶段是比较有利的,但是我最后还是拿起了电脑并告诉我自己无论再烦,无论无论再烦再烦,都必须写下去,写了,其实,人才能真正的宁静和放松下来,夜很安静了,只有我的敲键盘声,我不喜欢用睡美容觉的时间熬夜自虐,我只是希望在昨天“抱怨的时间不如去努力”的认知基础上,让自己切肤之痛的领悟到“焦虑不是逃避任务的借口” 无论怎么用搞笑视频逃避,最终都逃不过,都必须再回到这来,回来受这一场磨难,所以早完早好,自己要认清

 

原文地址:https://www.cnblogs.com/Marigolci/p/11144895.html

时间: 2024-08-26 04:58:29

LeetCode开心刷题十三天——24的相关文章

LeetCode开心刷题五十一天——118. Pascal&#39;s Triangle 接触跳转表概念,不知用处 lamda逗号导致表达式加法奇怪不理解119. Pascal&#39;s Triangle II

118. Pascal's Triangle Easy 87984FavoriteShare Given a non-negative integer numRows, generate the first numRows of Pascal's triangle. In Pascal's triangle, each number is the sum of the two numbers directly above it. Example: Input: 5 Output: [ [1],

LeetCode开心刷题五十六天——128. Longest Consecutive Sequence

最近刷题进展尚可,但是形式变化了下,因为感觉眼睛会看瞎,所以好多写在纸上.本来想放到文件夹存储起来,但是太容易丢了,明天整理下,赶紧拍上来把 今晚是周末,这一周都在不停的学学学,我想下周怕是不能睡午觉了,中午回去床对我的诱惑太大了,我得想办法,一进门先把被褥收起来,再放个欢快的歌,中午少吃点,加油小可爱 之前欠下的烂帐,把太多简单题做完,导致剩下的都是难题,所以万万记住一点捷径都不要走 128看花花酱大神的解法,发现对hashtable的了解十分不足,甚至一些常见函数都不知道是干什么的 这道题涉

LeetCode开心刷题第四天——7逆序8字符转数字

7 Reverse Integer Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 Example 2: Input: -123 Output: -321 Example 3: Input: 120 Output: 21 Note:Assume we are dealing with an environment which could only stor

LeetCode开心刷题五十五天——117. Populating Next Right Pointers in Each Node II

问题亟待解决: 1.一个问题一直困扰着我,想看下别人是怎么处理树的输入的,最好是以层级遍历这种清楚直观的方式. 2.关于指针*的使用 因此也导致代码不完整,没有主函数对Solution类的调用 117. Populating Next Right Pointers in Each Node II Medium 1161165FavoriteShare Given a binary tree struct Node { int val; Node *left; Node *right; Node

LeetCode开心刷题第九天——17Letter Combinations of a Phone Number

17. Letter Combinations of a Phone Number Medium 2241301FavoriteShare Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent. A mapping of digit to letters (just like on the teleph

LeetCode开心刷题十四天——25Reverse Nodes in k-Group

25. Reverse Nodes in k-Group Hard 1222257FavoriteShare Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. k is a positive integer and is less than or equal to the length of the linked list. If the number

LeetCode开心刷题十六天——29. Divide Two Integers*

From now on,I grade the questions I've done,* less means more difficult *** done by myself **need see answer,but I can reappear it *need see answer&hard to reappear 29. Divide Two Integers Medium 7003349FavoriteShare Given two integers dividend and d

LeetCode开心刷题二十六天——49.Group Anagrams

49. Group Anagrams Medium 1824116FavoriteShare Given an array of strings, group anagrams together. Example: Input: ["eat", "tea", "tan", "ate", "nat", "bat"], Output: [ ["ate","eat

LeetCode开心刷题二十九天——63. Unique Paths II**

63. Unique Paths II Medium 938145FavoriteShare A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The robot can only move either down or right at any point in time. The robot is trying to reach the bottom