Leetcode篇:两数之和



@author: ZZQ

@software: PyCharm

@file: addTwoNumbers.py

@time: 2018/9/18 10:35

要求:给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。

你可以假设除了数字 0 之外,这两个数字都不会以零开头。

e.g.: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)

输出:7 -> 0 -> 8

原因:342 + 465 = 807

------------------------------------------------------------------------------------------

class ListNode(object):
    def __init__(self, x):
        self.val = x
        self.next = None

class Solution():
    def __init__(self):
        pass

    def addsubtwonumber(self, *args):
        arg_len =len(*args)
        sum = 0
        for arg in range(arg_len):
            sum += args[0][arg]
        return sum % 10, sum / 10

    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        if l1 is None and l2 is None:
            return None

        if l1 is None:
            return l2

        if l2 is None:
            return l1

        l3 = ListNode(0)
        head = l3
        temp = 0
        temp_rem = ListNode(temp)
        while l1 is not None and l2 is not None:
            s, rem = self.addsubtwonumber([l1.val, l2.val, temp_rem.val])
            l3.next = ListNode(s)
            temp_rem.val = rem
            l3 = l3.next
            l2 = l2.next
            l1 = l1.next
        temp = 0
        # temp_rem.val = temp
        if l1 is None and l2 is not None:
            while l2 is not None:
                s, rem = self.addsubtwonumber([l2.val, temp_rem.val])
                l3.next = ListNode(s)
                l3 = l3.next
                l2 = l2.next
                temp_rem.val = rem
        else:
            if l1 is not None and l2 is None:
                while l1 is not None:
                    s, rem = self.addsubtwonumber([l1.val, temp_rem.val])
                    l3.next = ListNode(s)
                    l3 = l3.next
                    l1 = l1.next
                    temp_rem.val = rem
        if temp_rem.val != 0:
            l3.next = ListNode(temp_rem.val)
        return head.next

if __name__ == "__main__":
    answer = Solution()
    l1 = ListNode(9)
    l1.next = ListNode(8)
    l2 = ListNode(1)
    l3 = answer.addTwoNumbers(l1, l2)
    while l3 is not None:
        print l3.val
        l3 = l3.next

原文地址:https://www.cnblogs.com/zzq-123456/p/9671383.html

时间: 2024-08-29 07:47:06

Leetcode篇:两数之和的相关文章

[算法] LeetCode 1.两数之和

LeetCode 1.两数之和(python) 1.朴素解法 最朴素的两个for循环大法: class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: for i in range(len(nums)): for j in range(i+1,len(nums)): if nums[i] + nums[j] == target: return [i, j] 但注意,不要用enumerate函数写,会超时

前端与算法 leetcode 1. 两数之和

目录 # 前端与算法 leetcode 1. 两数之和 题目描述 概要 提示 解析 解法一:暴力法 解法二:HashMap法 算法 传入[2,7,11,1,12,34,4,15],19的运行结果 执行结果 GitHub仓库 # 前端与算法 leetcode 1. 两数之和 题目描述 给定一个整数数组 nums?和一个目标值 target,请你在该数组中找出和为目标值的那?两个?整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: 给

leetCode:twoSum 两数之和 【JAVA实现】

LeetCode 两数之和 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标. 您可以假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素. 更多文章查看个人博客 个人博客地址:twoSum 两数之和 [JAVA实现] 方法一 使用双重循环两两相加判断是否等于目标值 public List<String> twoSum2(int[] arr, int sum) { if (arr == null || arr.length == 0) { return new ArrayL

LeetCode——1.两数之和

LeetCode的第一题:两数之和,给定一个整数数组nums和一个目标值target,要求在数组中找出和为目标值的两个整数,并返回它们的下标值. 代码如下: 1 var nums = [2, 7, 11, 15] 2 var target = 9 3 4 var twoSum = function (nums, target) { 5 for (let i = 0; i < nums.length; i++) { 6 for (let j = i; j < nums.length; j++)

关于leetcode上两数之和的思考

今天在leetcode上完成这道题目时: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1] 初步代码为 1 class Solution { 2 public int[] t

【LeetCode】 两数之和 twoSum

两数之和 (简单) 题目描述 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数: 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 例如: 给定 nums = [2,7,11,15] ,target = 9 因为 nums[0] + nums[1] = 9: 因此返回 [0,1]: v1.0代码如下: 正数.0或重复值通过测试: 异常用例: [-1, -2, -3, -4, -5] -8; 输出 [] /** * @param {number[]} nums * @par

leetcode T1 两数之和详解

两数之和 题目描述 给定一个整数数组 nums?和一个目标值 target,请你在该数组中找出和为目标值的那?两个?整数,并返回他们的数组下标.你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例 给定 nums = [2, 7, 11, 15], target = 9,因为 nums[0] + nums[1] = 2 + 7 = 9,所以返回 [0, 1] 详细题解 暴力枚举 暴力法的思路很简单:遍历数组nums的每一个元素nums[i],在[i+1, ...,

LeetCode 1.两数之和

题目描述: 给定一个整数数列,找出其中和为特定值的那两个数. 你可以假设每个输入都只会有一种答案,同样的元素不能被重用. 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 先Po代码: /** * @param {number[]} nums * @param {number} target * @return {number[]} */ var twoSum = funct

python(leetcode)-1.两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 看到这道题,不难理解,就是找出两个值的和等于特定值的下标. 笔者没有太多的想法,用python暴力法先实现一遍 上代码(未

LeetCode 1. 两数之和(python3)实现

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1] 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum # 最