·
教程大全 ·
236162
剑指offer21.调整数组顺序使奇数位于偶数前面
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
示例:
输入:nums = [1,2,3,4]
输出:[1,3,2,4]
注:[3,1,2,4] 也是正确的答案之一。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof
解题思路
- 快慢指针求解
- 使用两个指针,一个快指针fast,一个慢指针slow,从数组下标0开始
- 慢指针slow存放下一个奇数应该存放的位置,快指针fast往前遍历搜索奇数,搜索到之后就和slow指向的值交换
代码实现
class Solution {
public:
vector<int> exchange(vector<int>& nums) {
int slow=0,fast=0;
while(fast<nums.size())
{
if(nums[fast]&1==1)
{
if(slow!=fast)
{
swap(nums[slow],nums[fast]);
}
slow++;
}
fast++;
}
return nums;
}
};
本文地址:https://blog.csdn.net/qq_43585157/article/details/109635103
np.sign()返回整数1、-1、0分别表示正、负、零;复数返回单位复数;不区分±0.0;用作布尔掩码前须处理零值,性能依赖数据类型,不支持非数值类型。 NumPy的np.sign()到底返回什么值 np.sign()对数组元素逐个判断符号,返回整数:正数→1,负数→-1,零→0。注意它不区分+0...
NumPy数组转置与轴换位本质相同但接口语义不同:.T仅适用于二维数组的简单转置,三维及以上会完全反转轴序;精确控制需用np.transpose()、np.swapaxes()或np.moveaxis()。 NumPy数组的转置和轴换位本质是同一类操作,但接口不同、语义侧重不同:用.T或np.tra...
本文介绍多种高效、内存友好的方法,将二维NumPy数组沿新增的第一维(axis=0)重复扩展为三维数组,涵盖np.expand_dims+np.repeat、np.tile、广播机制等主流方案,并对比其性能与适用场景。 本文介绍多种高效、内存友好的方法,将二维numpy数组沿新增的第一维(axis=...
默认verbose=1会每轮打印进度条及指标,是Keras为交互调试设计的正常行为;verbose=0静默、verbose=1带进度条、verbose=2仅每轮一行输出且无进度条。 默认verbose=1会每轮都打印完整指标,不是“刷屏”而是设计如此 verbose参数取值对训练输出的直接影响 Te...
最简单列重排序方式是用df[新列名列表],要求新列表包含原DataFrame全部列且名称完全一致;常见错误是列名空格、大小写或标点不匹配,应先用df.columns.tolist()核对真实列名。 用df[新列名列表]直接重排列顺序最简单 只要新列名列表里包含原DataFrame的全部列(不能多、不...
本文介绍如何在PySpark中自动识别以RECORDS_开头的JSON字符串列,动态推断其嵌套结构,并使用from_json转换为真正的StructType数组,确保最终写入S3的JSON文件中对应字段为原生JSON数组而非转义字符串。 本文介绍如何在pyspark中自动识别以`records_`开...
savez_compressed比savez更省空间,因其对每个数组单独使用DEFLATE算法压缩,而savez仅打包不压缩;稀疏或冗余数据压缩率可达50%–90%,如(10000,1000)浮点矩阵可从78MB压至8MB。 savez_compressed为什么比savez更省空间 savez_c...
循环依赖报错是Django迁移依赖图检测到闭环,如app_a.0001_initial依赖app_b.0002_add_field而后者又反向依赖前者,常见于跨App外键或GenericForeignKey中硬编码未就绪模型引用。 循环依赖报错的典型现象是Circulardependencydete...