首页 > 其他分享 >2021-7-23-Holiday23

2021-7-23-Holiday23

时间:2023-09-17 20:44:23浏览次数:44  
标签:ListNode val 23 Holiday23 next int 2021 l1 new

layout: post
title: xtx暑假第二三周日志
categories: 日志
tags: 
    - 日志 
    - 2021暑期日志
BGImage: 'https://github.xutongxin.me/https://raw.githubusercontent.com/xutongxin1/PictureBed/master/img0/20210904201804.png'
jekyll-theme-WuK:
    musicid: '41631040'

这是接下来23(4)周的日志了,原因就是电赛嘛,电赛的笔记是写在另一个markdown里的。所以这个日志就是记录除了电赛外所做的努力了,不过确实很少就是了。

线程池

7.19

继续整理零件准备焊接

7.20

因病休息

7.21

焊飞机的烧录线,搭架子

7.22

测试飞机的自动模式和位置锁定模式

7.23

超声波安装,调试,改写uart7驱动

7.24

向上光流测试(炸鸡现场)

7.25

休息

7.26 27

向上光流测试(炸鸡现场x2)x3

7.28

外部无遥控启动

至此全准备工作完成

然后由于的原因

弃赛

在接下来一周不定时间处理技术问题

7.29~8.3

模板都和泛型相关

模板函数

template <typename T> inline T const& Max (T const& a, T const& b)  {     return a < b ? b:a;  } 

https://blog.csdn.net/fightingforcv/article/details/51472586 泛型传入,此时T是传入的类型,如int,用于在模板函数定义时使用,如(T a)==(int a)

const&

inline https://www.runoob.com/w3cnote/cpp-inline-usage.html减少重复对简单函数调用所带来的堆栈空间消耗

模板类

template <class T>
class Stack { 
  private: 
    vector<T> elems;     // 元素 
 
  public: 
    void push(T const&);  // 入栈
    void pop();               // 出栈
    T top() const;            // 返回栈顶元素
    bool empty() const{       // 如果为空则返回真。
        return elems.empty(); 
    } 
}; 

泛型传入,此时T是传入的类型,如int,用于在模板类中做函数定义时使用,如(T a)==(int a)

异常处理,与python类似

try
{
   // 保护代码
}catch( ExceptionName e1 )
{
   // catch 块
}catch( ExceptionName e2 )
{
   // catch 块
}catch( ExceptionName eN )
{
   // catch 块
}

clion和leetcode配置

https://www.jianshu.com/p/04343d6be97e

最终模板方案:

${question.content}

\#include <iostream>
\#include <vector>

using namespace std;

${question.code}

int main()
{
    Solution s;
    cout<<"Hello LeetCode"<<endl;
}

Leetcode第一题
证明30%人和我一样用了低级的时间复杂度高的算法,70%人用了更快但空间开销更大的算法,还有4%的在摸鱼()

8.4

构造函数种类

https://blog.csdn.net/zxc024000/article/details/51153743

public:
	Student(int n,int a):num(n),age(a){} //构造函数 传入参数 : 赋值参数 函数内容
private:
	int num;
	int age;

nullptr

空指针常量值,如这样用

struct ListNode {
       int val;
        ListNode *next;
        ListNode() : val(0), next(nullptr) {}
        ListNode(int x) : val(x), next(nullptr) {}
        ListNode(int x, ListNode *next) : val(x), next(next) {}
    };

链表创建

光看不用问题大得很,前插法

#include <iostream>

struct ListNode {
    int val;
    ListNode *next;
    ListNode() : val(0), next(nullptr) {}
    ListNode(int x) : val(x), next(nullptr) {}
    ListNode(int x, ListNode *next) : val(x), next(next) {}
};

int main() {
    std::cout << "Hello, World!" << std::endl;
    int v1[3]={1,2,3};
    int v2[3]={1,2,3};

    ListNode *l1=new ListNode();
    ListNode *l2=new ListNode();
    l1->next=NULL;
    for(int i=0;i<3;i++)
    {
        ListNode *p=new ListNode(v1[i]);
        p->next=l1->next;//挤到后面去,对于第一次,将p作为末节点
        l1->next=p;
    }


    return 0;
}

image-20210804134350180

这是新建一个元素前插入,但是要插到最后面嘛

#include <iostream>

struct ListNode {
    int val;
    ListNode *next;
    ListNode() : val(0), next(nullptr) {}
    ListNode(int x) : val(x), next(nullptr) {}
    ListNode(int x, ListNode *next) : val(x), next(next) {}
};

int main() {
    std::cout << "Hello, World!" << std::endl;
    int v1[3]={1,2,3};
    int v2[3]={1,2,3};

    ListNode *l1=new ListNode();
    ListNode *l2=new ListNode();
    ListNode *last=l1;//上一个被插入的元素
    l1->next=NULL;
    for(int i=0;i<3;i++)
    {
        ListNode *p=new ListNode(v1[i]);
        last->next=p;//指向新的元素
        last=p;//新的元素作为上个被插入的元素
    }


    return 0;
}

也可以这样写

for(int i=0;i<3;i++)
{
	p->next=new ListNode(0);
    p=p->next;
 }

8.5

对链表的next,到底是赋值地址还是赋值指针非常重要

(注:本节笔记含有自行理解且不完全确认理解是否透彻而正确的内容)

struct ListNode {
    int val;
    ListNode *next;
    ListNode() : val(0), next(nullptr) {}
    ListNode(int x) : val(x), next(nullptr) {}
    ListNode(int x, ListNode *next) : val(x), next(next) {}
};

int v1[3]={1,2,3};
int v2[3]={1,2,3};
Solution s;
ListNode l1,l2,p;
l1=*new ListNode;
l2=*new ListNode;
l1.next=NULL;
for(int i=0;i<sizeof(v1);i++)
{
    p=*new ListNode(v1[i]);
    p.next=l1.next;//挤到后面去,对于第一次,将p作为末节点
    l1.next=&p;
}

得到的结果也是很惊人,清一色的重复引用

image-20210805005128684

关键就在

p=*new ListNode(v1[i]);
和
l1.next=&p;

如果按照书里的写法

image-20210805005411585

image-20210805005519128

可以看到书上是把指针赋值给了next,而我是把变量的地址赋值给了next

而且书上在new空间时是返回了一个指针而不是变量

所以我每一次把地址不断赋值给p的next,而p只是变量,p的地址从未改变,所以就闭环了

因此有句话特别重要

typedef struct ListNode *List;

但不行,这样转换后构造函数就用不了了,即便是这样写

ListNode* l1,*l2,*p;
*l1=new ListNode;
*l2=new ListNode;

也不行,因为题目中包含了构造函数,而我先声明在分配空间会报错

ListNode* l1,*l2,*p;
*l1=*new ListNode;
*l2=*new ListNode;

这样也不行,在执行阶段会出分配内存错误

所以应该这样写

ListNode *l2=new ListNode();

创建时分配空间顺带做构造函数

sizeof()

获取的是空间大小不是元素数量

对于int需要的话要

int a[10];
int b=sizeof(a)/4  //b=10

或者

int a[10];
int *pbeg = begin(arr);

int *pend = end(arr);

auto length = pend - pbeg;*//数组元素个数

8.6~8.8

动态规划两个要点:

空间换时间来节省重复的运算

状态转移方程

后者的通常格式为:max(前一状态+现状态,现状态)

可参见的题目:

最大子序列:

https://leetcode-cn.com/problems/maximum-subarray

(优秀解释:https://leetcode-cn.com/problems/maximum-subarray/solution/zui-da-zi-xu-he-cshi-xian-si-chong-jie-fa-bao-li-f/)

背包问题:https://www.bilibili.com/video/BV1XD4y1S7nv

![img](file:///C:\Users\xtx\Documents\Tencent Files\2656823393\Image\Group2\3X\0U\3X0U`405_CUKQK[WHQ${M$E.jpg)

标签:ListNode,val,23,Holiday23,next,int,2021,l1,new
From: https://www.cnblogs.com/xutongxin/p/17709761.html

相关文章

  • 2021-11-20-ASM总结
    layout:ASM总结title:大二上日志categories:日志tags:-比赛总结-大二BGImage:'https://github.xutongxin.me/https://raw.githubusercontent.com/xutongxin1/PictureBed/master/img0/20220310123346.png'jekyll-theme-WuK:musicid:'34367899'......
  • 2021-11-14-MQTT的python应用
    layout:posttitle:MQTT的python应用categories:日志tags:-日志-大二BGImage:'https://github.xutongxin.me/https://raw.githubusercontent.com/xutongxin1/PictureBed/master/img0/20220310123346.png'jekyll-theme-WuK:musicid:'34367899......
  • 2021-1-30-AD总结时间
    layout:posttitle:AD总结时间categories:日志tags:-开发-开发任务BGImage:'https://github.xutongxin.me/https://raw.githubusercontent.com/xutongxin1/PictureBed/master/img0/20201220234325.png'jekyll-theme-WuK:musicid:'744590'......
  • 2021-1-1-半潜船项目探索
    layout:posttitle:半潜船项目探索categories:日志tags:-开发-开发任务BGImage:'https://github.xutongxin.me/https://raw.githubusercontent.com/xutongxin1/PictureBed/master/img0/20201220234325.png'jekyll-theme-WuK:musicid:'744590'......
  • 2020-11-23-第12周开发日记
    layout:posttitle:xtx第12周开发日志categories:日志tags:-日志-2020日志BGImage:'https://cdn.jsdelivr.net/gh/xutongxin1/xutongxin1.github.io@a09d6cce1e133e1819736340f4016f10a0226969/asset/background/75006825_p0.jpg'jekyll-theme-WuK:m......
  • 【愚公系列】2023年09月 WPF控件专题 ListView控件详解
    (文章目录)前言WPF控件是WindowsPresentationFoundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见......
  • 2023年icpc网络赛第一场七题代码
    A模拟题首先跑一遍,得到校排名然后对两个比赛的校排名进行合并即可#include<bits/stdc++.h>usingnamespacestd;intn,m;map<string,int>o;strings[10010];vector<string>a,b;intmain(){cin>>n>>m;for(inti=1;i<=n;i++){cin>&......
  • 20211312徐元琦学习笔记2
    第9章I/O库函数——教材知识点归纳9.1~9.2系统调用和I/O库函数系统调用:操作系统中,进程以两种不同的方式运行:内核模式(Kmode)和用户模式(Umode)。Umode权限有限,特殊权限的操作需要在Kmode下进行。系统调用(SystemCall)机制允许进程进入Kmode,执行更高权限的操作。系统调用和I/O......
  • CSP 20123 入门组第一轮
    2023CCF非专业级别软件能力认证第一轮,(CSP-J1)入门级C++语言试题考生注意事项:●试题纸共有10页。答题纸共有2页,满分100分。请在答题纸上作答,写在试题纸上的一律无效。●不得使用任何电子设备(如计算器、手机、电子网费等)或查阅任何书籍资料。一、单项选择题(共15题,每......
  • 算法训练day10 LeetCode 232
    算法训练day10:LeetCode232.225.232.用栈实现队列题目232.用栈实现队列-力扣(LeetCode)题解代码随想录(programmercarl.com)classMyQueue{public:stack<int>stIn;stack<int>stOut;MyQueue(){}voidpush(intx){......