概述
1.给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
解:
def sum_nums(Nums,Target):
'''说明文档是个好习惯,一定记得写'''
for i in range(len(Nums)):
for j in range(i,len(Nums)):
sum_ij=Nums[i]+Nums[j]
if sum_ij==Target:
return [i,j]
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
print_hi('PyCharm')
nums=[2, 7, 11, 15]
target=9
print (sum_nums(nums,target))
return可以返回两个值,比如return i,j
enumerate(sequence, [start=0]):
示例:
>>> nums=[2, 7, 11, 15]
>>> for i,j in enumerate(nums):
print(i,j)
(0, 2)
(1, 7)
(2, 11)
(3, 15)
思路2:hashmap,记录下所有的和与对应的下角标,下角标为key,和为value,代码实现晚上补
2.
def input2list(ipt):
'''读输入去掉括号,输出字符列表'''
int_ipt=('1,2,3,4,5,6,7,8,9,0')
str_ipt=[]
for char_ipt in range(len(ipt)):
if ipt[char_ipt] in int_ipt or ipt[char_ipt]=='+':
str_ipt.append(ipt[char_ipt])
else:
pass
return str_ipt
def list_div(list_AB):
'''找到‘+’返回下标,使用list切片'''
for i in range(len(list_AB)):
if list_AB[i]=='+':
return i
def div(list_AB,i):
'''切片'''
A=list_AB[0:i]
B=list_AB[i+1:]
return A,B
def list2int(ipt2int):
'''先读出两个列表然后作为参数输入函数,转换成int输出'''
s=0
d={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
for i in ipt2int:
s=s*10+d[i]
return s
def flip(list_FLP):
'''翻转list,是不是只有list可以用这个格式迭代来着list.reverse()???str也能用切片和步长来迭代?'''
return list_FLP[::-1]
ipt=raw_input()
str_test=input2list(ipt)
str_FLP=flip(str_test)
i=list_div(str_FLP)
A,B=div(str_FLP,i)
sum_AB=list2int(A)+list2int(B)
print (flip(str(sum_AB)))
害!果然就是题目不一样不过还是把这个放进去吧
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
def str2int(l_s2i):
# dict_s2i={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
s = 0
for i in l_s2i:
s = s * 10 + i
return s
print (l1[::-1])
return str2int(l1[::-1])+str2int(l2[::-1])
s=Solution()
l1 = [2,4,3]
l2 = [5,6,4]
s.addTwoNumbers(l1,l2))
真正的原题:
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
好家伙,用python手写单链表ADT
def log(func):
def wrap(*args,**kw):
print ("call %s"%func.__name__)
return func(*args,**kw)
return wrap
@log
class ListNode(object):
'''实现单链表'''
@log
def __init__(self, val=0, next=None):
self.val = val
self.next = next
@log
def append(self,val):
'''实现append方法'''
while self.next!=None:
self=self.next
new_LN = ListNode(val)
self.next = new_LN
#return new_LN
@log
def travel(self):
'''实现travel方法'''
while self.next!=None:
print self.val
self=self.next
print self.val
l1=ListNode(2)
l1.append(4)
l1.append(3)
l1.travel()
l1.travel()
这里有个问题,我本来以为l1.append(3),l1应该是4所在的第二个结点的地址,也就是l1.val应该是4,结果还是2,那说明python其实对于self做实参其实是值传递
最后
以上就是花痴麦片为你收集整理的leetcode第1题的全部内容,希望文章能够帮你解决leetcode第1题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复