区块链技术博客
www.b2bchain.cn

用Python刷力扣:数组(下)求职学习资料

本文介绍了用Python刷力扣:数组(下)求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

前往力扣初级算法

用Python刷力扣:数组(上)

66. 加一

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

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

示例1:

输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。

解题一:

思路:判断最后一位+1是否大于9,如果大于9,则移动指针指向前一位,如果前一位+1依旧大于9,则继续,直到指针小于0,如果小于9,则停止。

class Solution:     def plusOne(self, digits: List[int]) -> List[int]:         p = len(digits)-1         while p >= 0:             if digits[p] + 1 > 9:                 digits[p] = 0                 if p == 0:                     digits.insert(0,1)             else:                 digits[p] = digits[p] + 1                 break             p -= 1         return  digits

解题二:

思路:是否可以用动态规划来做呢?

283. 移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

示例:

输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:

必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。

解法一:

思路:双指针

快指针每次加1

慢指针开始时指向0,每当快指针的值不为0时,快指针和慢指针的内容交换,慢指针+1

def moveZeroes(self, nums: List[int]) -> None:         """         Do not return anything, modify nums in-place instead.         """         j = 0         for i in range(len(nums)):             if nums[i] != 0:                 temp = nums[j]                 nums[j] = nums[i]                 nums[i] = temp                 j += 1         return nums

1. 两数之和

给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 的那两个整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

提示:

2 <= nums.length <= 103
-109 <= nums[i] <= 109
-109 <= target <= 109
只会存在一个有效答案

解题一:

思路:把每一个nums[i]的值存到字典中,遍历一次数组,如果字典中存在 target-nums[i] ,则返回

“`
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
dic = dict()
for i in range(len(nums)):

前往力扣初级算法

用Python刷力扣:数组(上)

66. 加一

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

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

示例1:

输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。

解题一:

思路:判断最后一位+1是否大于9,如果大于9,则移动指针指向前一位,如果前一位+1依旧大于9,则继续,直到指针小于0,如果小于9,则停止。

class Solution:     def plusOne(self, digits: List[int]) -> List[int]:         p = len(digits)-1         while p >= 0:             if digits[p] + 1 > 9:                 digits[p] = 0                 if p == 0:                     digits.insert(0,1)             else:                 digits[p] = digits[p] + 1                 break             p -= 1         return  digits

解题二:

思路:是否可以用动态规划来做呢?

283. 移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

示例:

输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:

必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。

解法一:

思路:双指针

快指针每次加1

慢指针开始时指向0,每当快指针的值不为0时,快指针和慢指针的内容交换,慢指针+1

def moveZeroes(self, nums: List[int]) -> None:         """         Do not return anything, modify nums in-place instead.         """         j = 0         for i in range(len(nums)):             if nums[i] != 0:                 temp = nums[j]                 nums[j] = nums[i]                 nums[i] = temp                 j += 1         return nums

1. 两数之和

给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 的那两个整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

提示:

2 <= nums.length <= 103
-109 <= nums[i] <= 109
-109 <= target <= 109
只会存在一个有效答案

解题一:

思路:把每一个nums[i]的值存到字典中,遍历一次数组,如果字典中存在 target-nums[i] ,则返回

“`
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
dic = dict()
for i in range(len(nums)):

前往力扣初级算法

用Python刷力扣:数组(上)

66. 加一

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

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

示例1:

输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。

解题一:

思路:判断最后一位+1是否大于9,如果大于9,则移动指针指向前一位,如果前一位+1依旧大于9,则继续,直到指针小于0,如果小于9,则停止。

class Solution:     def plusOne(self, digits: List[int]) -> List[int]:         p = len(digits)-1         while p >= 0:             if digits[p] + 1 > 9:                 digits[p] = 0                 if p == 0:                     digits.insert(0,1)             else:                 digits[p] = digits[p] + 1                 break             p -= 1         return  digits

解题二:

思路:是否可以用动态规划来做呢?

283. 移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

示例:

输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:

必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。

解法一:

思路:双指针

快指针每次加1

慢指针开始时指向0,每当快指针的值不为0时,快指针和慢指针的内容交换,慢指针+1

def moveZeroes(self, nums: List[int]) -> None:         """         Do not return anything, modify nums in-place instead.         """         j = 0         for i in range(len(nums)):             if nums[i] != 0:                 temp = nums[j]                 nums[j] = nums[i]                 nums[i] = temp                 j += 1         return nums

1. 两数之和

给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 的那两个整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

提示:

2 <= nums.length <= 103
-109 <= nums[i] <= 109
-109 <= target <= 109
只会存在一个有效答案

解题一:

思路:把每一个nums[i]的值存到字典中,遍历一次数组,如果字典中存在 target-nums[i] ,则返回

“`
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
dic = dict()
for i in range(len(nums)):

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 用Python刷力扣:数组(下)求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们