旅游网站分析,wordpress 面包屑插件,在线种子资源库,域名到期查询这里写目录标题 一、合并两个有序数组#xff08;力扣88 #xff09;二、剑指 Offer 39. 数组中出现次数超过一半的数字三、移除元素#xff08;力扣27#xff09;四、找出字符串中第一个匹配项的下标#xff08;28#xff09; 一、合并两个有序数组#xff08;力扣88 力扣88 二、剑指 Offer 39. 数组中出现次数超过一半的数字三、移除元素力扣27四、找出字符串中第一个匹配项的下标28 一、合并两个有序数组力扣88
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2另有两个整数 m 和 n 分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中使合并后的数组同样按 非递减顺序 排列。 注意最终合并后数组不应由函数返回而是存储在数组 nums1 中。为了应对这种情况nums1 的初始长度为 m n其中前 m 个元素表示应合并的元素后 n 个元素为 0 应忽略。nums2 的长度为 n 。
示例 1
输入nums1 [1,2,3,0,0,0], m 3, nums2 [2,5,6], n 3 输出[1,2,2,3,5,6] 解释需要合并 [1,2,3] 和 [2,5,6] 。 合并结果是 [1,2,2,3,5,6] 其中斜体加粗标注的为 nums1 中的元素。 示例 2
输入nums1 [1], m 1, nums2 [], n 0 输出[1] 解释需要合并 [1] 和 [] 。 合并结果是 [1] 。 示例 3
输入nums1 [0], m 0, nums2 [1], n 1 输出[1] 解释需要合并的数组是 [] 和 [1] 。 合并结果是 [1] 。 注意因为 m 0 所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。
def merge(nums1,m,nums2,n):p0q0if len(nums1)0:nums1[:]nums2[:]else:result[0]*(mn)for i in range(mn):if nums1[i]nums2[i]:p1elif nums1[i]nums2[i]:nums1[i]nums2[i]p1if pm and p!n:result[i1:]nums1[q:]if p!m and pn:result[i1:]nums1[p:m]if pm or qn:break
二、剑指 Offer 39. 数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半请找出这个数字。
你可以假设数组是非空的并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 思路既然数组中一定有一个数占比超过总数的一半那么当数组中的数排序后正中间的数一定有它。。
def test(nums):nums.sort()return nums[len(nums)//2]
nums[1, 2, 3, 2, 2, 2, 5, 4, 2]
rtest(nums)
print(r)三、移除元素力扣27
给你一个数组 nums 和一个值 val你需要 原地 移除所有数值等于 val 的元素并返回移除后数组的新长度。 不要使用额外的数组空间你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
示例 1 输入nums [3,2,2,3], val 3 输出2, nums [2,2] 解释函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如函数返回的新长度为 2 而 nums [2,2,3,3] 或 nums [2,2,0,0]也会被视作正确答案。
示例 2 输入nums [0,1,2,2,3,0,4,2], val 2 输出5, nums [0,1,4,0,3] 解释函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。
来源力扣LeetCode 链接https://leetcode.cn/problems/remove-element 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。
def test1(nums,val):slow0fast0while fastlen(nums):if nums[fast]!val:nums[slow]nums[fast]slow1fast1return slownums[3,2,2,3]
val3
print(test1(nums, val))四、找出字符串中第一个匹配项的下标28
给你两个字符串 haystack 和 needle 请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标下标从 0 开始。 如果 needle 不是 haystack 的一部分则返回 -1 。
示例 1 输入haystack “sadbutsad”, needle “sad” 输出0 解释“sad” 在下标 0 和 6 处匹配。 第一个匹配项的下标是 0 所以返回 0 。
示例 2 输入haystack “leetcode”, needle “leeto” 输出-1 解释“leeto” 没有在 “leetcode” 中出现所以返回 -1 。
def test6(str1,str2):str3str1.split(str2)if len(str3)!1:return len(str3[0])else:return -1