两数之和,两数相加(leetcode)
我们都知道算法是程序员成长重要的一环,怎么才能提高算法呢, 出来在网上看视频之外,动手练习是非常重要的。leetcode 就是一个非常好的锻炼平台。
1. 两数之和,在 leetcode 里面是属于 easy 级别的。我们看看他的题目和解法。
题目: 给定一个整数数组 nums
和一个目标值 target
,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
例子:
给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]题目说的很清楚, 给出一个列表和一个 目标值,找出列表中两数之和是 目标值的, 一个数不可重复使用。
思路:
我的思路是 循环遍历每一个数记作 index,然后 用 目标值(target)减去 index,看结果在不在这个列表里。
代码:
1 def twoSum(self, nums, target): 2 """ 3 :type nums: List[int] 4 :type target: int 5 :rtype: List[int] 6 """ 7 res_list = [] 8 for index, item in enumerate(nums): 9 res = target - item 10 if res in nums: 11 res_index = nums.index(res) 12 if res_index != index: 13 res_list.append(index) 14 res_list.append(res_index) 15 break 16 17 return res_list
总结:我的这个解法虽然不是最优解,但是总比双重 for 循环好一点(自我感觉)。时间复杂度 为 O(n), 空间复杂度 为 O(n)。
2. 两数相加
题目: 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
例子:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807
思路:逆序的两个简单链表,取出数相加 大于10 进1,别忘了最后一位相加大于 10 所进的 1.
代码:
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = Noneclass Solution:def addTwoNumbers(self, l1, l2):""":type l1: ListNode:type l2: ListNode:rtype: ListNode"""res = ListNode(0)cur = rescarry = 0while l1 or l2:n1 = l1.val if l1 != None else 0n2 = l2.val if l2 != None else 0sum = n1 + n2 + carrycarry = 1 if sum >= 10 else 0cur.next = ListNode(sum % 10)cur = cur.nextl1 = l1.next if l1 != None else Nonel2 = l2.next if l2 != None else Noneif carry != 0:cur.next = ListNode(1)return res.next
总结: 这是我模仿 Java 的写法,自己还没有想出特别的解法,有优秀的 Python 解法,大佬一定评论,让我学习学习。时间复杂度 O(n), leetcode 官方解释的更准确是:
时间复杂度:O(\max(m, n))O(max(m,n)),假设 mm 和 nn 分别表示 l1l1 和 l2l2 的长度,上面的算法最多重复 \max(m, n)max(m,n) 次。空间复杂度:O(\max(m, n))O(max(m,n)), 新列表的长度最多为 \max(m,n) + 1max(m,n)+1。
参考一下。
ps:
如果有不合理或者错误的地方,一定评论我,或者私聊我改正,以防误人子弟。不胜感激。谢谢。同时也期盼与每一位的相遇相识。
转载于:https://www.cnblogs.com/JulyShine/p/10152506.html
两数之和,两数相加(leetcode)相关推荐
- 两数、三数、四数之和相关题目(Leetcode题解-Python语言)
作为 Leetcode 的第一题,两数之和自然是知名度最高的,从两数之和出发也有不少的衍生题目,下面就让我们好好地解决它们. 1. 两数之和 class Solution:def twoSum(sel ...
- 基础数学(二)两数之和 三数之和
目录 两数之和_牛客题霸_牛客网 三数之和_牛客题霸_牛客网 两数之和_牛客题霸_牛客网 给出一个整型数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数的下标,返 ...
- 《漫画算法2》源码整理-6 两数之和 三数之和
两数之和 import java.util.*;public class TwoSum {public static List<List<Integer>> twoSum(in ...
- leetcode1. 两数之和--每天刷一道leetcode系列!
来自:程序员面试 作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人 题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们 ...
- leetcode1. 两数之和(两种方法)
一:题目 二:上码 1:方法一 class Solution {public:vector<int> twoSum(vector<int>& nums, int tar ...
- 【前端来刷LeetCode】两数之和与两数相加
大部分玩前端的小伙伴,在算法上都相对要薄弱些,毕竟调样式.调兼容就够掉头发的了,哪还有多余的头发再去折腾. 确实在前端中需要使用到算法的地方是比较少,但若要往高级方向发展,算法的基本功就非常重要啦.对 ...
- 【LeetCode】两数之和、三数之和、四数之和系列
文章目录 两数之和★ 三数之和★★ 四数之和★★ 四数相加Ⅱ★★ 最接近的三数之和★★ 此篇文章总结下力扣中的两数之和.三数之和.四数之和及一系列求数组中满足达到目标值的元组个数的问题,仔细阅读下面的 ...
- 算法训练Day6 | LeetCode:242. 有效的字母异位词(数组作哈希表);349. 两个数组的交集(Set作哈希表);202.快乐数 (Set作哈希表);1. 两数之和(Map作哈希表)
目录 LeetCode242. 有效的字母异位词 方法:数组作哈希表 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 Leetcode349. 两个数组的交集 方法一:用Set作HashMa ...
- 力扣(leetcode)-1. 两数之和
描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组 ...
- leetcode刷题:2.两数之和
本篇博客介绍如何找到两数之和.获取相加的两个数获取最终target的方法. 先看如下图: 我们很容易想到暴力解法.即两次循环获取结果,第一次循环循环黑圈,我们先假定第一个黑圈中1,是我们要的数,然后接 ...
最新文章
- 区块链和智能合约的关系
- 利用popstate事件和window下的history对象处理浏览器跳转问题
- mysqlhelper
- linux搭建宝塔重启mysql_宝塔面板安装 重启等命令linux系统重启
- C++实现静态顺序表的增删查改以及初始化
- 敏捷开发智慧敏捷系列之四:每日立会开多久?
- good archtchre article
- const和readonly区别
- linux内核的自旋锁spin_lock和互斥锁mutex_lock
- php怎么处理一对多,php - 如何处理内部连接以及与OOP的一对多关系? - SO中文参考 - www.soinside.com...
- 蓝桥杯题目练习 基础篇 [蓝桥杯2015初赛]奖券数目
- 利用python从《牛津高阶英汉词典》里提取单词列表
- 开源软件,自由软件,免费软件三者的区别
- 鼎捷T100标准接口调用
- 通过ip如何免费反查域名?
- 可能是全网唯一Elastic/Kibana认证考试报名还有优惠的地方
- 手机日历怎么备注农历生日提醒
- 我心中的计算机作文500,我心中的太阳作文500字(通用10篇)
- 如何在PCB中放置禁止触摸标志
- 人脸属性分析--性别、年龄和表情识别
热门文章
- C4C的Rich text editor的JavaScript实现
- 如何用SAP ABAP编程语言实现一个简单的区块链模型
- python 希尔伯特变换_python scipy signal.hilbert用法及代码示例
- php mysql查询结果_php对mysql查询结果进行分页 - ceil
- 计算机网络技术超文本,网络协议确定了计算机网络传递和管理信息的规范,其中HTTP属于()A、超文本传输协议B、传输控制协...
- HTML变列自适应布局三行,CSS三行三列DIV高度自适应的设置
- linux vim verilog,vim下好用的verilog插件:)( 更新) - [IC]
- 嵌入式linux开发环境 cpu,嵌入式Linux开发环境的搭建之:U-Boot移植-嵌入式系统-与非网...
- 联想服务器开机显示系统恢复选项,联想电脑win10系统开机时按哪个键进入一键还原模式...
- python dlib caffe人脸相似度_基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【一】如何配置caffe属性表...