两数之和,两数相加(leetcode)
我们都知道算法是程序员成长重要的一环,怎么才能提高算法呢, 出来在网上看视频之外,动手练习是非常重要的。leetcode 就是一个非常好的锻炼平台。
1. 两数之和,在 leetcode 里面是属于 easy 级别的。我们看看他的题目和解法。
题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
例子:
给定 nums = [, , , ], target = 因为 nums[] + nums[] = + =
所以返回 [, ] 题目说的很清楚, 给出一个列表和一个 目标值,找出列表中两数之和是 目标值的, 一个数不可重复使用。
思路:
我的思路是 循环遍历每一个数记作 index,然后 用 目标值(target)减去 index,看结果在不在这个列表里。
代码:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
res_list = []
for index, item in enumerate(nums):
res = target - item
if res in nums:
res_index = nums.index(res)
if res_index != index:
res_list.append(index)
res_list.append(res_index)
break 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 = None class Solution:
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
res = ListNode(0)
cur = res
carry = 0
while l1 or l2:
n1 = l1.val if l1 != None else 0
n2 = l2.val if l2 != None else 0
sum = n1 + n2 + carry
carry = 1 if sum >= 10 else 0
cur.next = ListNode(sum % 10)
cur = cur.next
l1 = l1.next if l1 != None else None
l2 = l2.next if l2 != None else None
if 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:
如果有不合理或者错误的地方,一定评论我,或者私聊我改正,以防误人子弟。不胜感激。谢谢。同时也期盼与每一位的相遇相识。
两数之和,两数相加(leetcode)的更多相关文章
- 【LeetCode】1. Two Sum 两数之和
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:two sum, 两数之和,题解,leetcode, 力 ...
- leecode刷题(8)-- 两数之和
leecode刷题(8)-- 两数之和 两数之和 描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输 ...
- 【LeetCode】18. 4Sum 四数之和
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:four sum, 4sum, 四数之和,题解,leet ...
- 【LeetCode】16. 3Sum Closest 最接近的三数之和
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:3sum, three sum, 三数之和,题解,lee ...
- 【LeetCode】15. 3Sum 三数之和
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:3sum, 三数之和,题解,leetcode, 力扣,P ...
- 【LeetCode】18.四数之和
题目描述 18. 四数之和 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 t ...
- Leetcode:0002(两数之和)
LeetCode:0002(两数之和) 题目描述:给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表.你可以假设除了数字 0 之外,这两 ...
- LeetCode :1.两数之和 解题报告及算法优化思路
最近开始重拾算法,在 LeetCode上刷题.顺便也记录下解题报告以及优化思路. 题目链接:1.两数之和 题意 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 ...
- Leetcode之二分法专题-167. 两数之和 II - 输入有序数组(Two Sum II - Input array is sorted)
Leetcode之二分法专题-167. 两数之和 II - 输入有序数组(Two Sum II - Input array is sorted) 给定一个已按照升序排列 的有序数组,找到两个数使得它们 ...
随机推荐
- vue_drf之支付宝接口
一.配置 1,生成应用秘钥和公钥 下载对应系统的秘钥生成工具: https://doc.open.alipay.com/docs/doc.htm?treeId=291&articleId=10 ...
- JavaScript 系列博客(四)
JavaScript 系列博客之(四) 前言 本篇介绍 JavaScript 中的对象.在第一篇博客中已经说到 JavaScript 是一种''对象模型''语言.所以可以这样说,对象是 JavaScr ...
- Android Studio 管理所有程序退出
import android.app.Activity; import java.util.ArrayList; import java.util.List; public class fa { pu ...
- spring boot 打jar包,获取resource路径下的文件
前言:最近在spring boot项目静态类中获取resource路径下文件,在idea中启动都可以获取,但是打包后变成了jar包 就无法获取到. 我想到了两种方法,一种是根据http访问静态资源比如 ...
- JavaSE-基础语法(四)-javaSE进阶
javaSE进阶 三.异常 四.多线程 五.Lambda表达式 六.IO流 七.网络编程 八.新特性 13.异常体系14.异常分类15.声明抛出捕获异常16.自定义异常17.线程概念18.线程同步19 ...
- 异常: Call From * 9000 failed on connection exception: java.net.ConnectException: Connection refused: no further information; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
场景: eclipse链接不上阿里云hadoop解决: 将hadoop的配置文件中的ip改为内网IP即可
- Laravel 系列入门教程(五)【最适合中国人的 Laravel 教程】
本文是本系列教程的完结篇,我们将一起给 Article 加入评论功能,让游客在前台页面可以查看.提交.回复评论,并完成后台评论管理功能,可以删除.编辑评论.Article 和评论将使用 Laravel ...
- Html5、css、JavaScript基础
一.HTML学习 HTML样式Css 内联样式- 在HTML元素中使用"style" 属性 内部样式表 -在HTML文档头部 <head> 区域使用<style& ...
- canvas-8clip.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 判断浏览器的名称,区分360的ie和谷歌内核
function getBrowserInfo() { var ua = navigator.userAgent.toLocaleLowerCase(); var browserType = null ...