每日一道Leetcode算法——Sort Array By Parity——2019.01.31

给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。 给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。可以返回满足此条件的任何数组作为答案。 该题目来自力扣题库 示例 输入:[3,1,2,4] 输出:[2,4,3,1] 输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。 思路 使用双指针 i ,j 。i从0开始往后走,j从A.length-1往前走。设置一个循环让i要小于j... 阅读详情

中文:

给定一个非负整数数组A,返回一个由A的所有偶数元素组成的数组,后跟A的所有奇数元素。 您可以返回满足此条件的任何答案数组。

 

Example 1:

Input: [3,1,2,4]
Output: [2,4,3,1]
The outputs [4,2,3,1], [2,4,1,3], and [4,2,1,3] would also be accepted.

Note:

  1. 1 <= A.length <= 5000
  2. 0 <= A[i] <= 5000

英文:

Given an array A of non-negative integers, return an array consisting of all the even elements of A, followed by all the odd elements of A.

You may return any answer array that satisfies this condition.

Example 1:

Input: [3,1,2,4]
Output: [2,4,3,1]
The outputs [4,2,3,1], [2,4,1,3], and [4,2,1,3] would also be accepted.

Note:

  1. 1 <= A.length <= 5000
  2. 0 <= A[i] <= 5000

解题思路:

题目没有说不让使用额外空间,而且只要求偶数在前,奇数灾后在后,没有要求奇偶数的顺序。

所以我们新建一个数组,和原数组长度一致。

然后循环原数组,判断是偶数,则从新数组的前面向后面放,如果是奇数,则从新数组的后面向前面放。

这样只循环一次,效率比较高。

package cn.leetcode.easy;

import java.util.Arrays;

/**
 * Given an array A of non-negative integers, return an array consisting of all the even elements of A, followed by all the odd elements of A.
 * You may return any answer array that satisfies this condition.
 *
 * @author kimtian
 * @date 2019.01.31
 * @num 905
 */
public class Sort_Array_By_Parity {
    /**
     * 题目没有说不让使用额外空间,而且只要求偶数在前,奇数灾后在后,没有要求奇偶数的顺序。
     * 所以我们新建一个数组,和原数组长度一致。
     * 然后循环原数组,判断是偶数,则从新数组的前面向后面放,如果是奇数,则从新数组的后面向前面放。
     * 这样只循环一次,效率比较高。
     *
     * @param A 待排序数组
     * @return 排序后数组
     */
    public static int[] sortArrayByParity(int[] A) {
        //创建一个新数组
        int[] newInt = new int[A.length];
        //定义一个新数组从头开始的指针
        int j = 0;
        //定义一个从新数组尾巴开始的指针
        int z = newInt.length - 1;
        //循环拿出老数组的数据
        for (int i = 0; i < A.length; i++) {
            //如果是偶数,则从数组的前往后放数据
            if (A[i] % 2 == 0) {
                //放入数据
                newInt[j] = A[i];
                //移动指针
                j++;
            }
            //奇数从从后往前放数据
            else {
                //放入数据
                newInt[z] = A[i];
                //移动指针
                z--;
            }
        }
        return newInt;

    }

    /**
     * 测试
     *
     * @param args
     */
    public static void main(String[] args) {
        int[] A = new int[]{1, 3, 5, 4, 2, 6, 7, 8, 0};
        System.out.println(Arrays.toString(sortArrayByParity(A)));
    }
}

 

Jacoco单元测试配置和使用 最近项目在重构。对未来的规划就是测试驱动开发。 先写单元测试,再开发代码。以单元测试的结果来判断代码实现的可用性。 因为大批量的补充之前的代码的单元测试,是一件产出大于收入的事情。 所以目前是在日常的需求周迭代中,补充了每次改动部分的单元测试。 为了客观展示单元测试补充情况,决定接入jacoco展示覆盖情况。 一.自己用maven搭建了一个springboot项目 见之前的博客:htt... 阅读详情

相关推荐

BMS保护板原理图+PCB+固件源码+bin文件+上位机

BMS保护板原理图+PCB+固件源码+bin文件+上位机 单片机是STM32F303CCT6 1、带有软电源开关输入,带 LED (LOAD) 开/关 + 充电指示灯; 2、具有高压侧电源开关,控制通断; 3、隔离式 CAN 总线接口; 4、电流测量; 5、带有短路检测; 6、带有USB 接口通信和固件升级; 7、蜂鸣器指示错误状态; 8、体积小巧; 9、短时间最大负载电流+/- 100A,长时间约为70A; 10、最大充电电流 10A(带二极管)或 30A(带二极管旁路); 11、电池电压范围为 2.5V 至 4.5V; 12、包电压 12V 至 54V;

Sort Array By Parity

class Solution { public: vector<int> sortArrayByParity(vector<int>& A) { size_t size=A.size(); int i=0,j=size-1; int temp=0; while(i<j)...

coolsunxu的博客 281

【带状电容器计算用于电容式触摸传感器应用】半数值模型的电容式触摸传感器集成于金属基材涂层中研究(Matlab代码实现)

内容概要:本文针对电容式触摸传感器在金属基材上应用时易受干扰导致信号衰减的问题,提出一种集成于金属基材涂层中的带状电容器半数值计算模型。通过理论推导建立传感器电容的数学模型,设定合理的边界条件并采用数值方法求解,利用Matlab实现完整的仿真代码,对传感器在金属背景下的电容特性进行精确建模与性能分析。该方法有效提升了传感器的灵敏度与抗干扰能力,适用于高精度、复杂环境下的触摸感应场景,具有良好的工程应用价值。研究不仅提供了详细的建模流程与仿真验证,还开放了可复现的代码资源,便于后续优化与拓展。; 适合人群:从事电容式传感器设计、嵌入式系统开发、人机交互技术研究及相关领域的科研人员,以及具备电磁场理论基础和Matlab编程能力的硕士、博士研究生;; 使用场景及目标:①用于金属表面电容式触摸传感系统的建模与性能优化;②为抗金属干扰传感器提供有效的半数值仿真方法与技术支撑;③辅助高校科研与教学中对电容耦合机制的理解及仿真平台搭建; 阅读建议:建议结合Matlab代码逐模块调试,深入理解模型中几何参数、材料属性及边界条件对电容输出的影响规律,可进一步推广至其他复杂结构或非理想环境下的传感器设计中。

Intellij IDEA ,按Ctrl+左键,不能进入类或方法,提示Cannot find declaration to go to。

一.Intellij IDEA ,按Ctrl+左键,不能进入类或方法,提示Cannot find declaration to go to。1.第一种方法:这个是由于打开项目的方式不对,应该是import项目而不是直接open项目。   例如我的项目是sbt项目,我直接open的项目,发现这样子Ctrl+鼠标左键是不能实现跳转的,也无法直接点进去看源码。就应该import项目。    但是我imp...

third_的博客 14万+

(Multisim课设资料)最全面函数信号发生器(三角波+正弦波+方波信号+锯齿波仿真设计+报告文档

内容概要:本文档是一份综合性科研技术资源汇总,系统梳理了工程与计算机科学领域的多项关键技术及其实现方法,涵盖图像处理、路径规划、无人机应用、通信技术、信号处理、电力系统优化、车间调度、雷达技术、微电网与综合能源系统调度等多个前沿方向。文档重点提供了基于Matlab和Simulink的丰富仿真案例,包括裂纹检测、双目视觉体积测量、卡尔曼滤波状态估计、永磁同步电机控制、无功优化、多目标调度算法(如NSGA-II、粒子群算法)在能源与交通系统中的应用,以及遗传算法、差分进化、人工蜂群等智能优化算法的代码实现。资源强调理论与实践深度融合,配套完整的仿真模型、算法代码与实验结果,具有较强的工程复现价值和科研指导意义。; 适合人群:具备一定编程基础的研究生、科研人员及从事自动化、电气工程、控制工程、通信、人工智能等相关领域工作的技术人员,尤其适合有1-3年工作经验的研发人员。; 使用场景及目标:①用于高校课程设计、毕业设计、科研项目开发和技术复现;②支撑电力系统优化、智能制造调度、智能交通路径规划、无人机控制等实际工程问题的算法研究与仿真验证;③帮助读者掌握主流优化算法与信号处理技术的核心原理与代码实现。; 阅读建议:建议读者结合文中提供的Matlab/Simulink代码与仿真模型进行实践操作,优先选择与自身研究方向相关的主题深入学习,并参考所提供的网盘链接获取完整资源以辅助调试与复现实验结果。

Webug4.0 打靶笔记

一、Webug 的安装 (1)基本信息 WeBug 名称定义为”我们的漏洞”靶场环境 ,基础环境是基于 PHP/mysql 制作搭建而成,中级环境与高级环境分别都是由互联网漏洞事件而收集的漏洞存在的操作环境。部分漏洞是基于Windows操作系统的漏洞所以将WeBug的web环境都装在了一个纯净版的Windows 2003的虚拟机中。在 webug3.0 发布后的四百多天 226安全团队终于在大年初二发布了 webug 的 4.0 版本。 (2)虚拟机的安装 最新超详细VMware虚拟机下载与安装_隐

m0_60716947的博客 6126

IDEA安装sbt插件,导入sbt项目

一.导入Sbt项目:导入sbt项目一定要下载sbt插件,否则导入进去的项目整个项目会有问题。下载sbt插件方法是:(1)进入Preference(mac下快捷键是command+,),选择Plugins,页面如下图:(2)选择Install JetBrains  plugin,然后输入sbt,安装scala。如图所示,没安装的情况下按钮是install。(3)安装完成后,重启一下IDEA。点击Fi...

third_的博客 1万+

碳纳米管NRAM:突破5纳米制程的下一代存储技术

在半导体存储领域,非易失性存储器和随机存取存储器是两大基础技术方向。传统DRAM速度快但断电易失,NAND Flash非易失但写入慢、寿命有限,两者在先进制程下都面临物理极限挑战。碳纳米管作为一种新型纳米材料,凭借其优异的导电性、机械强度和尺寸微缩潜力,为存储技术革新提供了物理基础。基于碳纳米管的NRAM技术,通过控制纳米管间的可逆接触实现电阻状态切换,兼具DRAM级速度和Flash的非易失性,同时具备近乎无限的擦写寿命和出色的CMOS工艺兼容性。这项技术不仅能满足5纳米以下制程的存储需求,在数据中心缓存、

weixin_42576804的博客 427

“HTTP/1.1 405 Method not allowed”问题和java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet问题

今天想再玩一下servlet,不用任何框架。 我是用IDEA直接导入的jar文件,新建一个HelloServlet继承HttpServlet。 问题一:在启动tomcat的时候,报错:java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest  可以确定是有jar包的,不然就会找不到HttpServlet,这个H...

third_的博客 8461

【Linux】Petalinux使用QSPI FLASH引导启动

1. 预分配Flash空间使用Flash引导Petalinux做的系统,也有进阶的做法。部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。1. 预分配Flash空间根据生成的bit文件大小估算BOOT.BIN文件的大小,为Flash大概分配四个分区:boot、bootenv、kernel、bootscr,分别存放BOOT.BIN文件、u-boot的环境变量、内核文件(image.ub/zImage/uImage等)、启动脚本boot.scr。

Tesseract_9527的博客 3372

甲基化生物信息学分析及批次效应校正全流程

本文系统阐述了DNA甲基化数据分析中的批次效应问题及解决方案。甲基化数据(β值和M值)对实验批次差异高度敏感,可能导致假阳性结果。文章详细介绍了批次效应检测方法(PCA可视化、BEclear定量评分)和校正流程,包括数据预处理、参数化(ComBat-met)与非参数化(BEclear)校正方法,并提供了完整的R代码实现。重点解决了β值有界分布与统计模型假设冲突的问题,为甲基化研究的可靠性提供技术保障。

huanghm88的专栏 105

get和post转发接口开发

1.前端想做一个功能,填写表单后,给企业微信传微信群名称以及用户列表,直接拉起一个群组。 我这边帮忙做一个转发。 /** *GET工具接口 **/ public Result TranferGet(String url) { try { url = java.net.URLDecoder.decode(url, "UTF-8"); } catc...

third_的博客 4847

【实验】ENSP 实战:酒店有线 + 无线三层组网全配置(VLAN 规划 + AC/AP+SSID 绑定)

三层架构:出口路由器 → 核心交换机 → 汇聚交换机 → 接入交换机 / AP / 终端。

jundao1997的专栏 430

有关重构项目的一些小经验

最近开始重构,发现重构真的是即恶心又爽的一件事。不断的发现问题,解决问题。 个人觉得后端重构要注意以下的几个点: 最重要的一点:新启一套接口和方法去重构,同时保证两套系统的可用性。 1.定义和前端协议参数的时候,名称,参数类型一定要统一,并列成一个表格放在公司wiki上。 (1)类似我们原有代码,对于定义定向id,有的叫targetingId,有的叫mid。可理解性差。不同get接口应该传的...

third_的博客 4321

DeepSeek如何构建可扩展的 AI 驱动交易系统,基于 MetaTrader 5 与 Python 利用先进的数据处理、机器学习和容器化部署来优化算法交易。

MT5 Python API 架构设计分为三层:通信层:利用异步消息传递(例如 ZeroMQ 或标准套接字编程)支持每秒数万个数据请求。转换层: C++ 动态库有效地将 MT5 命令转换为 Python 对象(反之亦然),从而优化速度和内存使用率。接口层:提供Pythonic API,封装了所有终端功能,包括:1)实时价格订阅(滴答或秒级更新)2)历史数据检索(从M1到更高的时间范围)3)订单流监控(交易详情和市场深度)4)策略执行引擎(用于算法交易)

iCloudEnd的博客 1378

【部署】Ubuntu 24.04.4虚拟机下部署OpenClaw

OpenClaw是一款基于AI的智能助手工具,本文详细介绍了在Ubuntu 24.04.4系统上的三种安装方法。推荐使用一键安装脚本(curl -fsSL https://openclaw.ai/install.sh | bash),自动完成Node.js检测、CLI安装和引导配置。对于开发者,提供了从源码构建的详细步骤,包括环境准备、依赖安装和构建流程。文章还包含常见问题解决方案(如sharp构建错误处理)以及后续维护建议(更新、配置检查和日志查看)。安装完成后,用户可通过终端TUI或Web UI进行初始

海兰 1万+

Java 8 数据流Stream的使用

一.Java里面对Stream的定义: A sequence of elements supporting sequential and parallel aggregate operations. 支持顺序和集合并行操作的一系列元素。 (1)Stream是元素的集合,类似于Iterator,单向,不可往复,数据只能遍历一次,遍历过一次数据即用尽了 (2)Stream 可以并行化操作,迭代...

third_的博客 3267

Android15音频进阶之解underrun与overrun思路(一百一十七)

本篇目的:Android15音频进阶之解underrun与overrun思路Underrun:发生在播放:APP准备的数据太少,导致底层没有音频数据可以播放,导致ADSP被“饿死了“,即Underrun。Overrun: 发声在录音:APP录音数据获取太慢了,导致底层录出来的数据太多了,APP播放不了,导致APP被“撑死了”,即Overrun。

Android系统攻城狮 2102

业务层错误码处理

最近在做两件事,一件是整体梳理我这边业务层的错误码,方便通过错误码立刻确定相应模块。同时以前是直接返回给前台相应的英文提示之类的错误,用户不方便理解,增加用户体验;第二件是接入我们的告警系统和平台,在主流程发生异常时,微信或者电话告警。一.错误码优化有关:(1)创建一个错误码的枚举类,方便查看和统一管理。package exception; public enum ExceptionEnum {...

third_的博客 2118

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

二进制

1.适合计算机的进制 二进制:计算机内部用二进制:运算简单,简化了计算机结构 其他进制: 八进制:适用于12位和36位计算机系统               标志的开头用0表示,用0~7的数字表示。 16进制:用0~9,A,B,C,D,E,F                表示表达长度短,变得更常用。标志的开头用0x表示。 2.二进制位运算 运算符 运算 示例 &a...

third_的博客 940

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java写的微信红包算法--田小江

写了一个微信红包的算法,记录一下,后续争取再优化一下,大佬们也帮忙看一下。import java.util.HashMap; import java.util.Map; public class WXTRedPackage { public static void main(String[] args) { WXTRedPackage wx = new WXTRedPackage(); ...

third_的博客 678

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

IntelliJ IDEA下载,安装,使用

一 . IntelliJ IDEA下载            1 . 下载地址:    https://www.jetbrains.com/idea/                 进入如下页面:                                2 . 点击download按钮后,跳转到页面:                        可以看到是支持Windows,macOS,...

third_的博客 631

Springboot(一)-----Springboot入门(各种常见问题解决)

本身搭建springboot项目是一个很easy的事,但亲手搭建的时候,踩了很多坑,记录一下。 一.构建一个springboot的maven项目。 访问Spring 的网址https://start.spring.io/ 填写Artifact为项目名称。 二.确定本地的maven配置是好的。 打开命令行。输入mvn -v。 如果显示出maven 的版本号等信息,就是成功了。 ...

third_的博客 491

java笔试题

1.public class Test1 { public static void main(String[] args) { int x = 5; boolean b1 = true; boolean b2 = false; if ((x == 4) &amp;&amp; !b2) { System.out.println("1"); } System.out.p...

third_的博客 446

每日一道Leetcode算法——Path Sum——2019.01.13

中文: 给定二叉树和求和,确定树是否具有根到叶路径,使得沿路径的所有值相加等于给定的总和。 注意:叶子是没有子节点的节点。 例: 鉴于以下二叉树和sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1 返回true,因为存在根到叶路径5-&gt; 4-&gt; 11...

third_的博客 421

每日一道Leetcode算法——Fair Candy Swap——2019.02.03

题干: 中文: Alice和Bob有不同大小的糖果棒:A [i]是Alice拥有的第i个糖果棒的大小,B [j]是Bob拥有的第j个糖果棒的大小。 由于他们是朋友,他们想交换一个糖果,以便交换后,他们都有相同的糖果总量。 (一个人拥有的糖果总量是他们拥有的糖果大小的总和。) 返回一个整数数组ans,其中ans [0]是Alice必须交换的直板的大小,ans [1]是Bob必须交换的直板的大小。...

third_的博客 372
上一篇: 每日一道Leetcode算法——Find All Numbers Disappeared in an Array——2019.01.30
下一篇: 每日一道Leetcode算法——N-Repeated Element in Size 2N Array——2019.01.18
田小江爱分享
博客等级 码龄10年 34粉丝 143原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值