首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

剑指offer | 面试题16:将数组中的奇数放在偶数前

leetcode/blob/main/algo-notes/src/main/java/com/nateshao/sword_offer/topic_16_exchange/Solution.java 将数组中的奇数放在偶数前...题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。...提示: 0 <= nums.length <= 50000 0 <= nums[i] <= 10000 解题思路: 考虑定义双指针 i , j分列数组左右两端,循环执行: 指针 i 从左向右寻找偶数;...指针 j 从右向左寻找奇数; 将 偶数 nums[i]和 奇数 nums[j] 交换。...算法流程: 初始化: i , j 双指针,分别指向数组 nums 左右两端; 循环交换: 当 i = j 时跳出; 指针 i 遇到奇数则执行 i = i + 1 跳过,直到找到偶数; 指针 j 遇到偶数则执行

67220
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    LeetCode攀登之旅(4)

    ,直接将两个有序的数组或者说列表进行合并,而在python中合并直接是相加就可以了。...下面来阐述二分查找法在本题中的思想。 对于求中位数,分为两种情况,分别为偶数与奇数情况。...(1)当两个数组的长度之和为偶数时,最终得到的中位数为两个中间数之和除以2; (2)而当两个数组的长度之和为奇数时,最终得到的中位数刚好为中间数。...题中所知,两个数组为有序数组,那么我们能否按照下手稿所示,通过切分,将nums1切分为左右两部分,nums2同此操作,最后有四个数,分别是x2,x3,y5,y6为我们最终中位数的考量范围。...如果此时恰好x2的左右区间。 此时如果两个数组之和为奇数,那么直接获取在x2与y5中取最大值,即为最终结果。

    43530

    11个Python循环技巧

    例如,我们想将奇数和偶数分别存储在两个列表中:css 代码解读复制代码# 创建奇数和偶数列表numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]odd_numbers =...根据索引范围创建多个列表有时候,我们需要根据索引范围将列表切分成多个子列表。...:", odd_numbers)print("偶数列表:", even_numbers)这将根据列表元素的奇偶性将其分别存储在奇数和偶数列表中。...总结总的来说,本文介绍了在Python中利用循环创建多个列表的多种方法,并通过具体的代码示例进行了展示和解释。...这些方法不仅提高了代码的灵活性和可维护性,还能够加速开发过程并提高程序的性能。通过本文的学习,读者可以掌握在Python中处理数据并组织成多个列表的技巧,从而更加有效地进行数据操作和管理。

    8710

    python 取列表偶数和奇数位置的值

    python中的列表等于其他语言中的数组 首先了解下一般取列表怎么按索引取值,也就是列表的切片: list[i:j] 就是从列表的索引 i 到索引j 个的值;列表的索引第一位是从0开始的 list[i...:j:2] 一样取i 到 j 但加入了步长 这里步长为2;也就是取每次索引位置开始+2的值 看了上面,应该就知道怎么取奇数位 偶数位了吧 list[::2 ] 就是取奇数位 这里的 i j 我们省略的话就是默认数组最开头到结尾...list[1::2] 这里缺省了j 但是i定义了1 也就是从数组第二个数开始取 ,所以这个是取偶数位 例子: l=['28', '7', '55', '0', '82', '3', '9', '4'..., '92', '9', '54', '7', '19', '4', '36', '6'] print(f'奇数位:{l[::2]}\n偶数位:{l[1::2]}') 结果: 奇数位:['28', '55...', '82', '9', '92', '54', '19', '36'] 偶数位:['7', '0', '3', '4', '9', '7', '4', '6']

    9210

    【算法题解】 Day28 双指针

    调整数组顺序使奇数位于偶数前面 题目 剑指 Offer 21....调整数组顺序使奇数位于偶数前面 难度:easy 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。...遍历两次 nums,第一次遍历时把所有奇数依次追加到 ress 中,第二次遍历时把所有偶数依次追加到 res 中。  ...然后从 nums右侧开始遍历,如果遇到的是偶数,就表示这个元素已经调整完成了,继续从右往左遍历,直到遇到一个奇数。...方法一:双指针 思路 倒序遍历字符串 s,记录单词左右索引边界 i , j ; 每确定一个单词的边界,则将其添加至单词列表 res ; 最终,将单词列表拼接为字符串,并返回即可。

    15120

    【数据结构和算法】奇偶链表

    一、题目描述 给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。...第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。 请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。...对于原始链表,每个节点都是奇数节点或偶数节点。头节点是奇数节点,头节点的后一个节点是偶数节点,相邻节点的奇偶性不同。...因此可以将奇数节点和偶数节点分离成奇数链表和偶数链表,然后将偶数链表连接在奇数链表之后,合并后的链表即为结果链表。...需要遍历链表中的每个节点,并更新指针。 空间复杂度:O(1)。只需要维护有限的指针。

    18510

    用于从数组中删除重复元素的 Python 程序

    数组是相同数据类型的元素的集合,数组中的每个元素都由索引值标识。它是一种最简单的数据结构,其中每个数据元素都可以通过使用其索引号直接访问。...Python 中的数组 Python 没有特定的数据结构来表示数组。在这里,我们可以使用 列出一个数组。 [6, 4, 1, 5, 9] 0 1 2 3 4 python 中的索引从 0 开始。...在上面的块中,整数 6、4、1、5、9 是数组元素,0、1、2、3、4 是各自的索引值。 数组可以有重复的元素,在本文中,我们将讨论几种从数组中删除重复元素的方法。...dict.fromkeys() 方法用于从给定的键和值集创建字典。...因此,fromkeys() 方法会自行删除重复的值。然后我们将其转换为列表以获取包含所有唯一元素的数组。 这些是我们可以从数组中删除重复元素的一些方法。

    27920

    2023-05-31:给定一个整数数组 A,你可以从某一起始索引出发,跳跃一定次数 在你跳跃的过程中,第 1、3、5... 次跳跃称为奇数跳跃 而第 2、4、6

    2023-05-31:给定一个整数数组 A,你可以从某一起始索引出发,跳跃一定次数在你跳跃的过程中,第 1、3、5... 次跳跃称为奇数跳跃而第 2、4、6......次跳跃称为偶数跳跃你可以按以下方式从索引 i 向后跳转到索引 j(其中 i 奇数跳跃时(如,第 1,3,5......如果从某一索引开始跳跃一定次数(可能是 0 次或多次)就可以到达数组的末尾(索引 A.length - 1)那么该索引就会被认为是好的起始索引。返回好的起始索引的数量。输入:2,3,1,1,4。...答案2023-05-31:大体步骤如下:1.对于数组中的每个元素,使用有序表(treemap)分别找到奇数规则和偶数规则下的下一步位置。...2.奇数规则下要寻找第一个大于等于当前值的位置,而偶数规则下要寻找第一个小于等于当前值的位置。3.使用动态规划方法,从后往前遍历数组,对于每个位置分别判断是否能够到达数组的末尾。

    19600

    【从零学习python 】45.Python中的类方法和静态方法

    类方法、静态方法 类方法 类方法是以类对象作为第一个参数的方法。需要使用装饰器@classmethod来标识其为类方法。对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数。...__type 使用场景: 当方法中需要使用类对象(如访问私有类属性等)时,定义类方法。 类方法一般和类属性配合使用。...静态方法 静态方法通过装饰器@staticmethod来修饰,静态方法既不需要传递类对象也不需要传递实例对象(形参没有self/cls)。静态方法也可以通过实例对象和类对象去访问。...使用场景 当方法既不需要使用实例对象(如实例对象,实例属性),也不需要使用类对象(如类属性、类方法、创建实例等)时,定义静态方法。 取消不需要的参数传递,有利于减少不必要的内存占用和性能消耗。...注意点: 当类中定义了同名的方法时,调用方法会执行最后定义的方法。

    13710

    每日算法题:Day 7

    作者:TeddyZhang,公众号:算法工程师之路 Day 7, 数据结构知识点走起~ 1 编程题 【剑指Offer】调整数组顺序使奇数放在偶数之前 输入一个整数数组,实现一个函数来调整该数组中数字的顺序...,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。...思路: 首先我们很快会想到使用辅助数组,分别统计奇数和偶数,然后再将这两个数组合并起来!注意一点,我们不需要去建立两个数组,只使用一个数组就好,奇数数组可以使用原数组!...因此我们可以遍历整个数组,如果为奇数,则与其前面的所有偶数交换位置,这样也可以达到我们的目的!...class Solution { public: // 类似于插入排序的方法,将奇数依次的插入到偶数的前面 void reOrderArray(vector &array) {

    47220

    Scala面向对象练习题34道

    、请按照年龄从大到小排序 26.9、把每个人的姓名性别年龄合成一个输出 26.10、把年龄为奇数和偶数的人分开 27、创建一个demo27的单例,在demo27中 创建List(“hello world...2.求出arr0中每个元素10倍的乘积 3.将arr1中每个字符串用","切分,组成一个新的集合,并且求出数组的长度 4.将arr0进行奇数偶数分区,基数分区进行正序排序,偶数部分倒序排序 31、创建一个...”, “77,88,99”) 1.遍历输出A1,并将每个数2且输出 2.A1升序 3.A1降序 4.A1奇数偶数分开 5.将A2中每个字符串用",“切分,组成一个新的集合,并且求出数组的长度 6.将A2...“,”切分,生成新的集合,并将奇数偶数分开打印 33、创建一个demo33的单例,在demo33中 1.创建一个名为list的List(6, 7, 8, 9, 10, 11, 12, 13, 14, 15...2.求出a0中每个元素10倍的乘积并降序输出 3.求a1中大于10的数据的总和 4.将a0进行奇数偶数分区,基数分区进行正序排序,偶数部分倒序排序

    97540

    【贪心】算法思想,附两道道手撕题

    贪心思想是一种解决问题的方法,它通过在每一步选择中都采取最好或者最优的选择,以期望最终结果也是最好或者最优的。 这种思想简单直接,但在某些问题上却能发挥出惊人的效果。...这种性质使得贪心算法能够以递归的方式,从局部到全局,逐步构建出解决方案。 贪心选择性质 贪心选择性质是贪心算法的核心。 在每一步选择中,算法都会采取当前看来最好的选择,而不考虑这个选择对未来的影响。...这是因为任何子字符串都可以看作是原字符串的一部分,而原字符串中 'o' 的总数是偶数,所以任何子字符串中的 'o' 总数也必然是偶数或零(如果子字符串中没有 'o')。...因此,整个字符串本身就是一个符合条件的子字符串,因为它包含了偶数次的 'o'。 奇数情况: 当字符串中 'o' 的总数为奇数时,我们的目标是找到一个包含偶数次 'o' 的最长子字符串。...由于 'o' 的总数是奇数,任何包含所有 'o' 的子字符串都不可能满足条件(因为它将包含奇数个 'o')。因此,我们必须至少去掉一个字符,使得剩余的子字符串中 'o' 的数量变为偶数。

    10510

    Leetcode【526、667、932】

    注意到,美丽数组有如下数学性质: 1、A 是一个漂亮数组,对于 A 中的位置 k,k 左边的都是奇数,k 右边的都是偶数(或者 k 左边的都是偶数,k 右边的都是奇数),因为这样安排就一定能保证 2...= A[i] + A[j] (偶数 != 奇数 + 偶数 或 偶数 !...有了上述几条性质,我们就可以解决本题的构造问题了。 我们知道一个漂亮数组 A 可以分为奇数部分 A1 和偶数部分 A2(性质 1)。...此时如果有一个漂亮数组 B,那么 2*B-1 是一个漂亮数组(性质 2、3)并且是奇数数组,而 2*B 也是一个漂亮数组(性质 2)并且是偶数数组。...所以我们从最简单的 ans = [1] 开始推导,构造奇数 [(2*i-1) for i in ans] + 偶数 [2*i for i in ans]拼接在一起成为新的美丽数组;如果当前构造的美丽数组的长度小于

    59620

    LeetCode 2164. 对奇偶下标分别排序

    题目 给你一个下标从 0 开始的整数数组 nums 。根据下述规则重排 nums 中的值: 按 非递增 顺序排列 nums 奇数下标 上的所有值。...偶数下标 0 和 2 的值按照非递减顺序重排。 返回重排 nums 的值之后形成的数组。...所以,nums 从 [4,1,2,3] 变为 [4,3,2,1] 。 然后,按非递减顺序重排偶数下标(0 和 2)的值。 所以,nums 从 [4,1,2,3] 变为 [2,3,4,1] 。...因此,重排之后形成的数组是 [2,3,4,1] 。 示例 2: 输入:nums = [2,1] 输出:[2,1] 解释: 由于只有一个奇数下标和一个偶数下标,所以不会发生重排。...解题 python切片取出奇偶数组,排序,写回原数组 class Solution: def sortEvenOdd(self, nums: List[int]) -> List[int]:

    38420
    领券