程序地带

Day five


前端

其实今天差点就打乱每日行程了,早上按时起床背完单词,然后今早在看html的书,看到第四章,说要把自己的网站发布上去。然后我就去找办法,如何白嫖个域名,临时学习一下如何发布网站就好了。没想到搜了半天之后就搜到了搭建自己的博客,利用github和hexo创建属于自己的博客,听起来有点帅,就尝试学着搭建,一弄就弄到了下午。创建过程曲折,总有奇怪的错误,然后解决,最后成功创建了。可是自己又不想套用别人的blog架构,但是自己目前的能力搭起来会很慢,所以我就决定先把他放在那,等我把前端知识学完,第一个实践的项目就是搭建好自己的blog界面! 今天记录的要点不多,等明天一起发了。


算法题 来源:力扣(LeetCode)138


给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。 要求返回这个链表的 深拷贝。 我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:


val:一个表示 Node.val 的整数。random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为 null 。 示例1: 在这里插入图片描述 输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]] 输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]

示例 2: 在这里插入图片描述


输入:head = [[1,1],[2,1]] 输出:[[1,1],[2,1]]


示例 3: 在这里插入图片描述


输入:head = [[3,null],[3,0],[3,null]] 输出:[[3,null],[3,0],[3,null]]


示例 4: 输入:head = [] 输出:[] 解释:给定的链表为空(空指针),因此返回 null。


提示: -10000 <= Node.val <= 10000 Node.random 为空(null)或指向链表中的节点。 节点数目不超过 1000 。 解题思路 复制一个普通的链表很简单,但是当多了一个random节点之后,就会让复制变得困难。困难点在当前节点的random节点是链表的第几个,我们在链表中的信息只能得到当前节点的random节点是哪一个,所以我们就利用map,让每一个链表节点都有一个相应的id,就能确切知道当前节点的random节点是链表的第几个,接下来的复制工作就不那么复杂了。


/*
// Definition for a Node.
class Node {
public:
int val;
Node* next;
Node* random;
Node(int _val) {
val = _val;
next = NULL;
random = NULL;
}
};
*/
class Solution {
public:
Node* copyRandomList(Node* head) {
std::map<Node*,int> node_map;
std::vector<Node*>node_vec;//存放复制节点
Node *ptr=head;
int i =0;
while(ptr){
node_vec.push_back(new Node(ptr->val));//放在末尾
node_map[ptr]=i;//给原链表每个节点一个id
ptr=ptr->next;//遍历链表
i++;
}
node_vec.push_back(0);//为了不用处理最后一个节点
ptr=head;
i=0;
while(ptr){
node_vec[i]->next=node_vec[i+1];//新链表链接
if(ptr->random){
int id=node_map[ptr->random];//找到原链表random节点的id
node_vec[i]->random=node_vec[id];//链接random节点
}
ptr=ptr->next;
i++;
}
return node_vec[0];
}
};

算法题 题目:来源:力扣(LeetCode) 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 在这里插入图片描述


输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4]


示例 2: 输入:l1 = [], l2 = [] 输出:[]


示例 3: 输入:l1 = [], l2 = [0] 输出:[0] 提示: 两个链表的节点数目范围是 [0, 50] -100 <= Node.val <= 100 l1 和 l2 均按 非递减顺序 排列


解题思路 这道题题目不难,就两个链表从头对比,,最后需要注意就是,其中一个链表长度比另一个长,需要补上去。


class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode temp_head(0);
ListNode *pre=&temp_head;
while(l1&&l2){
if(l1->val<l2->val){
pre->next=l1;
l1=l1->next;
}else{
pre->next=l2;
l2=l2->next;
}
pre=pre->next;
}
if(l1){
pre->next=l1;
}
if(l2){
pre->next=l2;
}
return temp_head.next;
}
};

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44928513/article/details/112689313

随机推荐

SqlServer的分割函数

SqlServer的分割函数

select*from[dbo].[f_splitSTR]('1,2,3',',') 执行之后的结果如图:...

转角向右捡爱 阅读(700)

QT实战-常见功能实现-精进篇

QT实战-常见功能实现-精进篇

Qt版本:5.9.1-----0.如何设置所有按钮全局统一样式,如soui那样的?如取消所有按钮默认样式[//全局设置,取消按钮默认样式  this->setStyl...

kevin--你不知道的事 阅读(208)

函数

函数

连续与可导的关系可导一定连续,连续不一定可导。连续是可导的必要条件,但不是充分条件。周期函数如果f(x)f(x)f(x)是以T为周期的函数,则f′(x)f&#...

oneslide 阅读(223)

vue---vue-cli项目使用mockjs模拟数据

vue---vue-cli项目使用mockjs模拟数据

一、mockjs介绍1、mock.js两大优点.生成随机数据。支持丰富类型的数据,如文本、数字、布尔值、日期、邮箱、链接、图片、颜色等。拦截Ajax请求,让前端项目可独立于...

maidu_xbd 阅读(303)

2021年高新申报时间是什么时候

2021年高新申报时间是什么时候

对于需要申请高新技术企业认定资格的公司来说,特别想了解清楚2021年高新申报时间是什么时候,这样可以方便其做好相关的准备工作。 一般来说,关于本年度的高新申报...

weixin_49368879 阅读(843)

mac下编译静态ffmpge-缩减版

mac下编译静态ffmpge-缩减版

安装ffmpeg之前,需要先安装x264安装libx64通过x264官网下载x264源码解压libx64,并在解压目录中创建build目录安装x264,这里因为使用的是静态...

刘小通通 阅读(170)

递归算法之汉诺塔

递归算法之汉诺塔

把n个盘子从A移动到C,相当于把n-1个盘子从A移动到B,再把A最底下的那个盘子移动到C,最后再把n-1个盘子从B移动到C,n-1个盘子继续用递...

ysh1026 阅读(742)

赚商联盟:知识付费网课项目带给我们普通人的好处和机会

赚商联盟:知识付费网课项目带给我们普通人的好处和机会

由于自己运营项目的原因,最近也关注了不少网上关于知识付费网课项目的话题。也接触了不少做这个项目的用户。发现大家对知识付费网课这个项目真的是又爱又恨。爱的是通过知识付费打开了一个万花筒般的...

赚商联盟 阅读(546)