【数据结构与算法】解题20240313

在这里插入图片描述


这里写目录标题

  • 一、现场写一个代码,有两个字符串类型的数字,实现一个方法将它们进行相加,并返回相加后的数值。(要考虑数据的长度问题)
  • 一、287. 寻找重复数
  • 三、617. 合并二叉树

一、现场写一个代码,有两个字符串类型的数字,实现一个方法将它们进行相加,并返回相加后的数值。(要考虑数据的长度问题)

class S:def func(self,a,b):carry=0res=''i=len(a)-1j=len(b)-1while i>=0 or j>=0 or carry!=0:A=int(a[i]) if i>=0 else 0B=int(b(j)) if j>=0 else 0sumAB=A+B+carryif sumAB>10:carry=1sumAB=sumAB%10else:carry=0i-=1j-=1res+=str(sumAB)r = S()
num1 = "99"
num2 = "999"
print(r.func(num1, num2))

一、287. 寻找重复数

中等
给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。
假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。
你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。

示例 1:
输入:nums = [1,3,4,2,2]
输出:2

示例 2:
输入:nums = [3,1,3,4,2]
输出:3

示例 3 :
输入:nums = [3,3,3,3,3]
输出:3

解题思路
首先明确前提,整数的数组nums中的数字范围是 [1,n]。考虑一下两种情况:
一、如果数组中没有重复的数,以数组 [1,3,4,2]为例,我们将数组下标 n 和数 nums[n] 建立一个映射关
其映射关系 n->f(n)为:
0->1
1->3
2->4
3->2
我们从下标为 0 出发,根据 f(n)计算出一个值,以这个值为新的下标,再用这个函数计算,以此类推,直到下标超界。这样可以产生一个类似链表一样的序列。
0->1->3->2->4->null
如果数组中有重复的数,以数组 [1,3,4,2,2] 为例,我们将数组下标 n 和数 nums[n] 建立一个映射关系 f(n),
其映射关系 n->f(n) 为:
0->1
1->3
2->4
3->2
4->2
同样的,我们从下标为 0 出发,根据 f(n)计算出一个值,以这个值为新的下标,再用这个函数计算,以此类推产生一个类似链表一样的序列。
0->1->3->2->4->2->4->2->……
这里 2->4 是一个循环,那么这个链表可以抽象为下图:

在这里插入图片描述

从理论上讲,数组中如果有重复的数,那么就会产生多对一的映射,这样,形成的链表就一定会有环路了,

综上
1.数组中有一个重复的整数——》链表中存在环
2.找到数组中的重复整数 ——> 找到链表的环入口

class S287:def func(self,nums):slow=0fast=0while True:slow=nums[slow]     #slow=slow.nextfast=nums[nums[fast]]   #fast=fast.next.nextif fast==slow:  #首次相遇点breakfast=0                  #fast回到起点while slow!=fast:       #再次相遇即为重复数字slow=nums[slow]fast=nums[fast]

三、617. 合并二叉树

简单
给你两棵二叉树: root1 和 root2 。
想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。
返回合并后的二叉树。
注意: 合并过程必须从两个树的根节点开始

在这里插入图片描述

class S:def func(self, root1, root2):if not root1:return root2if not root2:return root1root = TreeNode(root1.val + root2.val)root.left = self.func(root1.left, root2.left)root.right = self.func(root1.right, root2.right)return root

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

土木工程设计系列-基于规范的简单基础工程自动设计

土木工程设计系列-基于规范的简单基础工程自动设计 土木工程设计系列-基于规范的简单基础工程自动设计 土木工程设计系列-基于规范的简单基础工程自动设计前言基础工程设计简介程序组成源码文件树文件说明:程序执行流程 部分接口介绍程序使用源码获取 前言 本文为土…

牛客:反转链表

牛客:反转链表 题目描述方法一:代码解题思路 方法二:代码解题思路 题目描述 给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链…

代码随想录算法训练营Day45 ||leetCode 70. 爬楼梯 (进阶)|| 322. 零钱兑换 || 279.完全平方数

70. 爬楼梯 &#xff08;进阶&#xff09; 本质上和leetcode377一样 #include <iostream> #include <vector> using namespace std; int main() {int n, m;while (cin >> n >> m) {vector<int> dp(n 1, 0);dp[0] 1;for (int i 1; i < n; i…

【测试】1. 概念 + 基础篇

概念篇 测试相较于开发岗位而言&#xff0c;如果同学们的编程能力稍微弱一些&#xff0c;可以尝试测试方向&#xff08;更简单&#xff09; 1. 什么是软件测试 最常见的理解是&#xff1a;软件测试就是找BUG&#xff0c;发现缺陷。 早期&#xff0c;人们更多的将测试看成是对…

window python开发环境搭建- Anaconda

window python开发环境搭建- Anaconda 下载Anacnoda配置Anconda验证Anaconda是否安装成功验证 conda 是否安装成功验证 pip 是否安装成功验证 python 是否安装成功 配置镜像源conda 镜像源pip 镜像源 pip 常用命令conda 常用命令 下载Anacnoda anacoda官网地址 https://www.an…

语音情感基座模型emotion2vec

在语音技术领域&#xff0c;准确理解用户的语音指令和意图是构建高效人机交互系统的基础。一个高品质的语音交互系统不仅需要理解字面上的语言内容&#xff0c;更应捕捉到说话者语音中蕴含的情感信息。这正是语音情感识别&#xff08;SER&#xff09;技术要解决的问题&#xff…

邮件发送:行业会议邀请的高效新选择

随着数字化浪潮的不断深入&#xff0c;营销手段也在不断的创新和升级。因此&#xff0c;如何高效、精准地触达并吸引目标用户群体参与行业会议已成为众多会议举办方的核心关注点。在这一背景下&#xff0c;邮件推送服务凭借其独特的优势正逐渐成为行业会议邀请的新选择。 邮件推…

C语言例2-3:从键盘输入一个正整数(位数小于或等于10),判断其是否是回文数

回文数是将自然数n的各位数字反向排列得到自然数n1&#xff0c;若n1与n相等&#xff0c;则称为回文数&#xff0c;例如12321 //从键盘输入一个正整数&#xff08;位数小于或等于10&#xff09;&#xff0c;判断其是否是回文数 //回文数是将自然数n的各位数字反向排列得到自然数…

科研三维模型高精度三维扫描服务3d逆向测绘建模工业产品抄数设计

三维抄数技术在科研三维模型的应用已经日益广泛&#xff0c;其高精度、高效率的特点使得科研工作者能够更快速、更准确地获取和分析数据。这一技术的核心在于通过专业的三维扫描仪对实物进行高精度测量&#xff0c;再将这些数据转化为三维数字模型&#xff0c;为后续的研究提供…

垃圾回收器介绍

java堆内存结构包括&#xff1a;新生代和老年代&#xff0c;其中新生代由一个伊甸区和2个幸存区组成&#xff0c;2个幸存区是大小相同&#xff0c;完全对称的&#xff0c;没有任何差别。我们把它们称为S0区和S1区&#xff0c;也可以称为from区和to区。 JVM的垃圾回收主要是针对…

presto / trino plugin(自定义UDF函数)开发指南

方案1:自定义udf插件开发 1. Presto插件机制 presto不能像hive那样配置自定义的udf,而是采用插件机制实现。Presto 的插件(Plugin)机制,是 Presto 能够整合多种数据源的核心。通过实现不同的 Plugin,Presto 允许用户在不同类型的数据源之间进行 JOIN 等计算。Presto 内部的…

第十七章垃圾回收器

第十七章垃圾回收器 文章目录 第十七章垃圾回收器1. GC分类与性能指标1.1 垃圾回收器概述1.2 垃圾回收器分类1.3 评估GC的性能指标吞吐量暂停时间吞吐量VS暂停时间 2. 不同的垃圾回收器概述七种经典垃圾回收器七种经典收集器与垃圾分代之间的关系垃圾收集器的组合关系如何查看默…