力扣刷题
为了提高自我对各种算法了理解,和提高解决实际问题的能力,在力扣网进行刷题,由于我熟练掌握两种语言,即每道题提供java,和Python的解题通过代码!如果内容有类似的可以联系我进行删除。题目来源和详情请查看:力扣
1. 两数之和
给定一个整数数组 nums
和一个整数目标值target
,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例1:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例2:
输入:nums = [3,2,4], target = 6
输出:[1,2]
- java代码
class Solution {
public int[] twoSum(int[] nums, int target) {
int len=nums.length;
for(int i=0;i<len;i++){
for(int j=i+1;j<len;j++){
if(nums[i]+nums[j]==target) return new int[]{i,j};
}
}
return null;
}
}
// 通过 0 ms 38.1 MB Java 2021/05/11 21:03
- python代码
class Solution(object):
def twoSum(self, nums, target):
n_len = len(nums)
for i in range(n_len):
for j in range(i + 1, n_len):
if nums[i] + nums[j] == target:
return [i, j]
#通过 20 ms 13 MB Python 2021/05/11 21:45
简化后如下
class Solution(object):
def twoSum(self, nums, target):
return [[i,j] for i in range(len(nums)) for j in range(i+1,len(nums)) if nums[i]+nums[j]==target ][0]
#通过 292 ms 12.9 MB Python 2021/05/11 21:46
2. 两数相加
给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例1:
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.
示例 2:
输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]
- java代码
class Solution1 {
public void addList(ListNode root,int val){
ListNode tem = root;
while (null != tem.next) {
tem = tem.next;
}
tem.next = new ListNode(val);
}
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode root = null;
int num = 0;
while (l1 != null || l2 != null) {
int i = 0, j = 0;
if (l1 != null) { i = l1.val;l1 = l1.next; }
if (l2 != null) { j = l2.val;l2 = l2.next; }
if (root == null) root = new ListNode((i + j) % 10);
else addList(root,(i + j + num) % 10);
num = (i + j) + num >= 10 ? 1 : 0;
}
if (num == 1) addList(root,1);
return root;
}
}
//通过 2 ms 38.8 MB Java 2021/05/12 16:28
- python 代码
class Solution:
def addListNode(self, root: ListNode, val):
tem = root
while None != tem.next:tem = tem.next
tem.next = ListNode(val)
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
root = None
num = 0
while l1 is not None or l2 is not None:
i = 0
j = 0
if l1 is not None:
i = l1.val
l1 = l1.next
if l2 is not None:
j = l2.val
l2 = l2.next
if root is None:
root = ListNode((i + j) % 10)
else:
self.addListNode(root, (i + j + num) % 10)
num = 1 if (i + j + num) > 10 else 0
if num == 1: self.addListNode(root, 1)
return root
#通过 64 ms 15 MB Python3 2021/05/12 17:16