--每周分享--

news2024/11/22 23:42:59

分享内容:

1.单链表的归并排序

2.一道有趣的思考题

分享细节:

单链表的归并排序

主要思想:递归

怎么理解?下面具体说明:

1.首先,我从整体的思考步骤说明:先分区,再排序,最后合并

2.理解递归:递归什么?怎么递归?递归结束条件是什么?递归的返回值是什么?

递归什么:我们想要通过找中间值来不断的分割链表,既然需要不断地分割,那么就需要递归本身区找中间值分割链表。由于我们最初说“先分区,再排序,最后合并”,那么分区操作就得写在前面。

怎么递归:找到中间值,有两段链表,那么就需要调用两次函数,分别对两边的链表继续分割。这就要提到一个注意点:怎么断开?如果在数组中,我们直接就用索引,【左边,mid】【mid + 1,右边】,但是在链表中我们要让mid->next = NULL,让链表在mid处断开,因为:确保每个递归步骤都在将链表分割为较小的部分时维护链表的正确性。在递归过程中,排序的过程可能会受到影响,因为递归过程中会改变链表的连接关系。

递归结束条件是什么:分为一个结点时结束递归,开始合并。

递归的返回值就是合并后返回的链表头。

那么,其实从递归结束条件就可以知道:“分为一个结点时结束递归,开始合并。”,那么压根就不需要排序,为什么?因为每个结点已经成为一个结点了,其实就是一个个的有序链表。

上代码看一下:

Node* merge(Node* head1, Node* head2) {
	if (head1 == NULL) {
		return head2;
	}

	if (head2 == NULL) {
		return head1;
	}
	if (head1->data < head2->data) {
		head1->next = merge(head1->next, head2);
		return head1;
	}

	else {
		head2->next = merge(head1, head2->next);
		return head2;
	}

}

Node* rank_kuai(Node* head){
	if (head == NULL || head->next == NULL) {
		return head;
	}

	Node* low = head;
	Node* kuai = head->next;
	 Node* mid = NULL;
	 Node* mid_next = NULL;
	while (kuai != NULL && kuai->next != NULL) {
		low = low->next;
		kuai = kuai->next->next;
	}
	mid = low;
	mid_next = mid->next;
	mid->next = NULL;
	head = rank_kuai(head);
	mid_next = rank_kuai(mid_next);
	return merge(head,mid_next);

}
一道有趣的思考题

爬楼梯:

 可以大胆的想一想:(贪心)

我们想:上第n阶台阶其实就是第n-1阶台阶的上法 + 第n-2阶台阶的上法

怎么理解:其实很简单:第n-1阶台阶到最后一阶台阶和第n-2阶台阶到最后一阶台阶的最后一步不一样,那么他们之前所有的走法都不可能重复,所以直接相加即可。

那么,此时就是一道斐波那契数列的应用问题。

代码:

int climbStairs(int n) {
//贪心:
    //斐波那契数列的应用
    if(n == 1){
        return 1;
    }
    if(n == 2){
        return 2;
    }
    
    int f1 = 1,f2 = 2;
    int f3 = f1 + f2;
    while(n>3){
        f1 = f2;
        f2 = f3;
        f3 = f1 + f2;
        n--;
    }
    
    return f3;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1589322.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3d里怎么让模型直接显示材质---模大狮模型网

在3D设计和渲染中&#xff0c;使模型直接显示材质是一个常见但也关键的需求。直接显示材质可以帮助设计师更直观地预览和编辑模型的外观&#xff0c;从而提高工作效率并确保最终效果符合预期。本文将介绍一些方法和技巧&#xff0c;帮助你在3D设计中实现模型直接显示材质的目标…

防火墙搭建内网 安装路由器

经典网络情况 也就是网吧 先配置网段 科普&#xff1a;子网掩码代表IP前面几位不能动 安装防火墙虚拟机 配置两个网卡 第一个 第二个桥接 设置子网掩码 虚拟机有DHCP 可以不用防火墙的DHCP 配置有网站的ip地址和网关 利用防火墙映射出去外网 然后看防火墙外网ip 然后…

C++三大特性(1)——继承

一.继承的概念及定义 概念 继承&#xff08;inheritance&#xff09;机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保存原有类特性的基础上进行拓展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称为派生类。继承呈现了面向…

set用法

ES6中的Set是一种新的数据结构&#xff0c;类似于数组&#xff0c;用于存储有序的数据。Set没有随机访问的能力&#xff0c;不能通过索引来获取具体的某个元素Set中的元素具有唯一性&#xff0c;不允许存储相同的元素。 Set本身是一个构造函数&#xff0c;可以用来实例化Set对…

计算机网络—HTTPS协议详解:工作原理、安全性及应用实践

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;ヒューマノイド—ずっと真夜中でいいのに。 1:03━━━━━━️&#x1f49f;──────── 5:06 &#x1f504; ◀️ ⏸…

陆面、生态、水文模拟与多源遥感数据同化

原文链接&#xff1a;陆面、生态、水文模拟与多源遥感数据同化https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247601198&idx6&sn51b9b26b75c9df1f11dcb9a187878261&chksmfa820dc9cdf584df9ac3b997c767d63fef263d79d30238a6523db94f68aec621e1f91df85f6…

VMware 安装配置 Ubuntu(最新版、超详细)

1. 下载安装 VMware ➡️➡️➡️来源&#xff1a;VMware Docs VMware Workstation Pro™ 使专业技术人员能够在同一台 PC 上同时运行多个基于 x86 的 Windows、Linux 和其他操作系统&#xff0c;从而开发、测试、演示和部署软件。 [Step 1]&#xff1a; 点击 VMware Workstati…

【Java探索之旅】从输入输出到猜数字游戏

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; Java编程秘籍 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、输入输出1.1 输出到控制台1.2 从键盘输入 二、猜数字游戏2.1 所需知识&#xff1a…

【TI毫米波雷达】I2C初始化配置和主机数据收发,用SDA来模拟UART数据输出,可直接连接IWR6843AOP开发板引脚

【TI毫米波雷达】I2C初始化配置和主机数据收发&#xff0c;用SDA来模拟UART数据输出&#xff0c;可直接连接IWR6843AOP开发板引脚 文章目录 导入库引脚复用初始化I2C配置数据发送用SDA来模拟UART数据输出附录&#xff1a;结构框架雷达基本原理叙述雷达天线排列位置芯片框架Demo…

数据结构-----枚举、泛型进阶(通配符?)

文章目录 枚举1 背景及定义2 使用3 枚举优点缺点4 枚举和反射4.1 枚举是否可以通过反射&#xff0c;拿到实例对象呢&#xff1f; 5 总结 泛型进阶1 通配符 ?1.1 通配符解决什么问题1.2 通配符上界1.3 通配符下界 枚举 1 背景及定义 枚举是在JDK1.5以后引入的。主要用途是&am…

【Linux】进程通信之匿名管道通信

一、进程间进行通信的目的 我们往往需要多个进程协同&#xff0c;共同完成一些事情。 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程资源共享&#xff1a;多个进程之间共享同样的资源。通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c…

Netty NioEventLoop详解

文章目录 前言类图主要功能NioEventLoop如何实现事件循环NioEventLoop如何处理多路复用Netty如何管理Channel和Selector管理Channel管理Selector注意事项 前言 Netty通过事件循环机制(EventLoop)处理IO事件和异步任务&#xff0c;简单来说&#xff0c;就是通过一个死循环&…

23年坚守,只为打造高品质立秀膨体,索康让品质为中国说话

2024年3月23日&#xff0c;第二十三届上海国际整形美容外科大会&#xff08;以下简称“大会”&#xff09;在上海召开&#xff0c;本次大会由张涤生整形外科发展基金会主办&#xff0c;上海交通大学附属第九人民医院整复外科、Chinese Journal of Plastic and Reconstructive S…

性能优化 - 你知道CSS有哪些优化方案吗

难度级别:中高级及以上 提问概率:70% CSS是前端开发工作中必不可少的技能之一,同时也是网页开发中必不可少的重要元素之一。但很多人所开发的项目本身对性能要求并不高,再加上项目周期紧张,久而久之,也就容易养成不考虑细节的习惯,觉得C…

NzN的数据结构--二叉树part2

上一章我们介绍了二叉树入门的一些内容&#xff0c;本章我们就要正式开始学习二叉树的实现方法&#xff0c;先三连后看是好习惯&#xff01;&#xff01;&#xff01; 目录 一、二叉树的顺序结构及实现 1. 二叉树的顺序结构 2. 堆的概念及结构 3. 堆的实现 3.1 堆的创建 …

04-12 周五基于VS code + Python实现CSDN发布文章的自动生成

简介 之前曾经说过&#xff0c;在撰写文章之后&#xff0c;需要&#xff0c;同样需要将外链的图像转换为的形式&#xff0c;因此&#xff0c;可以参考 04-12 周五 基于VS Code Python 实现单词的自动提取 配置步骤 配置task 在vscode的命令面板configure task。配置如下的任…

python知识点汇总(十一)

python知识点总结 1、当Python退出时&#xff0c;是否会清除所有分配的内存&#xff1f;2、Python的优势有哪些&#xff1f;3、什么是元组的解封装4、Python中如何动态获取和设置对象的属性&#xff1f;5、创建删除操作系统上的文件6、主动抛出异常7、help() 函数和 dir() 函数…

人工智能基础部分26-基于知识推理引擎KIE算法的原理介绍与实际应用

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能基础部分26-基于知识推理引擎KIE算法的原理介绍与实际应用。知识推理引擎(Knowledge Inference Engine, KIE)是一种人工智能技术&#xff0c;其核心原理是基于规则和逻辑的方法来处理复杂的问题。它构建在业…

从前端角度防范XSS攻击的策略与实践

XSS&#xff08;Cross-Site Scripting&#xff0c;跨站脚本攻击&#xff09;是一种常见的网络安全威胁&#xff0c;它允许攻击者将恶意脚本注入到正常的网页中&#xff0c;从而在其他用户的浏览器上执行这些脚本。这可能导致数据泄露、会话劫持、甚至是对受害者计算机的完全控制…

探新路建“枢纽” 湖南深耕中非经贸合作“试验田”

湖南作为中国与非洲经贸合作的重要窗口&#xff0c;积极推动中非经贸关系的发展和深化。通过构建覆盖全产业链的高效运作模式&#xff0c;湖南企业能够在一周内将肯尼亚干制鳀鱼加工成为麻辣鲜香的劲仔深海小鱼并投入中国市场。此外&#xff0c;湖南还致力于推动非洲优质农产品…