旋转数组的最小数字、二维数组中的查找、调整数组顺序使奇数位于偶数前面

news2024/11/28 6:44:57

文章目录

  • 1、 旋转数组的最小数字
  • 2、调整数组顺序使奇数位于偶数前面
  • 3、二维数组中的查找

1、 旋转数组的最小数字

本题考点:核心考点:数组理解,二分查找,临界条件 牛客链接

题目描述:
有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。

数据范围:1≤n≤10000,数组中任意元素的值:100000≤val≤10000
要求:空间复杂度:O(1) ,时间复杂度:O(logn)

图解:

代码:

class Solution {
public:
    int minNumberInRotateArray(vector<int> rotateArray) {
        int left = 0, rigth = rotateArray.size() - 1;
        // 循环
        while (left < rigth) {
            // 找到数组的中点 m
            int m = (left + rigth) / 2;
            // m在左排序数组中,旋转点在 [m+1, j] 中
            if (rotateArray[m] > rotateArray[rigth]) left = m + 1;
            // m 在右排序数组中,旋转点在 [i, m]中
            else if (rotateArray[m] < rotateArray[rigth]) rigth = m;
            // 缩小范围继续判断
            else rigth--;
        }
        // 返回旋转点
        return rotateArray[rigth];
    }
};

2、调整数组顺序使奇数位于偶数前面

本题考点:数组操作,排序思想的扩展使用 牛客链接

题目描述:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

图解:

在这里插入图片描述
代码:

class Solution {
public:
    void reOrderArray(vector<int> &array) {
        
        int place = 0; //奇数要插入的位置
        for(int i = 0; i < array.size(); i++)
        {
            if(array[i] & 1)
            {
                int temp = array[i];
                int j = i;
                while(j > place)
                {
                    array[j] = array[j - 1];
                    j--;
                }
                array[place++] = temp;
            }
        }
    }
};

3、二维数组中的查找

本题考点:数组相关,特性观察,时间复杂度把握牛客链接

题目描述:
在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
在这里插入图片描述
数据范围:矩阵的长宽满足5000≤n,m≤500 , 矩阵中的值满足0≤val≤10^9
进阶:空间复杂度 O(1) ,时间复杂度 O(n+m)

图解:
在这里插入图片描述

代码:

class Solution {
public:
    bool Find(int target, vector<vector<int> > array) {
        int ROW = 0, COL = array[0].size() - 1;
        while(ROW < array.size() && COL >= 0)
        {
            if(array[ROW][COL] > target)
            {
                COL--;
            }
            else if(array[ROW][COL] < target)
            {
                ROW++;
            }
            else
            {
                return true;
            }
        }
        return false;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/26887.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简述Spring Bean生命周期

前言 在Spring容器里&#xff0c;Bean的完整生命周期比较长。但是我们必须要掌握它。 Bean周期总览 Bean周期总体如下所示。 接下来会简单讲下各个步骤的主要功能。 Bean实例化 必须步骤。 此步骤主要是实例化一个Bean&#xff0c;例如new一个对象。这个步骤主要是设置be…

运动无线耳机什么牌子好?六款实用性不错的运动耳机推荐

跑步的过程如果没有音乐真的很难继续跑下去&#xff0c;当然&#xff0c;有了音乐的加入&#xff0c;运动过程也变得更加有动力&#xff0c;烦恼的心情也会随着烟消云散。一款好的运动耳机能让我们运动变得更加轻松&#xff0c;什么运动耳机值得大家入手&#xff1f;今天我就来…

计算机毕业设计java+ssm舞蹈管理系统(源码+系统+mysql数据库+Lw文档)

项目介绍 舞蹈管理系统是使用JAVA的SSM技术&#xff0c;MySQL作为数据库开发&#xff0c;用户通过查看舞蹈信息&#xff0c;在线预约课程&#xff0c;实现舞蹈管理。首先对本论文进行分析后&#xff0c;提出平台的相关技术&#xff0c;然后整理系统的需求分析&#xff0c;根据…

_c++11( lambda)

lambda表达式1 C98中的一个例子2 lambda表达式3 lambda表达式语法4 函数对象与lambda表达式1 C98中的一个例子 在C98中&#xff0c;如果想要对一个数据集合中的元素进行排序&#xff0c;可以使用std::sort方法。 #include <algorithm> #include <functional> voi…

[附源码]计算机毕业设计JAVA教师业绩考核系统

[附源码]计算机毕业设计JAVA教师业绩考核系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybati…

Sharding-JDBC 基础

Sharding-JDBC 是当当网开源的适用于微服务的分布式数据访问基础类库&#xff0c;完整的实现了分库分表&#xff0c;读写分离和分布式主键功能&#xff0c;并初步实现了柔性事务。 从 2016 年开源至今&#xff0c;在经历了整体架构的数次精炼以及稳定性打磨后&#xff0c;如今…

AQS源码解析 3.lock() unlock() 加锁解锁过程

AQS源码解析 3.lock() & unlock() 加锁解锁过程 Lock() 过程 这里使用 ReentrantLock 的公平锁去看 AQS 的加锁过程。在 ReentrantLock 的实现中&#xff0c;其默认构造的锁是非公平锁。 详细流程图 尝试获取锁 构造节点入队过程 在队列中被挂起 被唤醒重新抢锁的过…

说一下 ArrayList 和 LinkedList 的区别?

本文已收录到 AndroidFamily&#xff0c;技术和职场问题&#xff0c;请关注公众号 [彭旭锐] 提问。 前言 大家好&#xff0c;我是小彭。 在上一篇文章里&#xff0c;我们聊到了基于动态数组 ArrayList 线性表&#xff0c;今天我们来讨论一个基于链表的线性表 —— LinkedList…

JavaScript构造函数和原型:ES5 中的新增方法

ES5 新增方法概述 ES5 中给我们新增了一些方法&#xff0c;可以很方便的操作数组或者字符串&#xff0c;这些方法主要包括&#xff1a; 数组方法 字符串方法 对象方法 数组方法 迭代(遍历)方法&#xff1a;forEach()、map()、filter()、some()、every()&#xff1b; arr…

AVL右旋转思路分析与图解

AVL树右旋转思路分析与图解 其实我们前面讲过了左旋转之后再学习右旋转就会非常的简单了, 因为我们的右旋转相对我们的左旋转只是换了一个方向而已, 那么下面我们就来讲解右旋转的实现 对于数列{10, 12, 8, 9 ,7, 6} , 当我们插入6的时候leftHeight() - rightHeight() > 1…

Linux 之 Ubuntu 代码开发工具 Visual Studio Code(VSCode) 的安装与一些常用插件配置的简单整理

Linux 之 Ubuntu 代码开发工具 Visual Studio Code(VSCode) 的安装与一些常用插件配置的简单整理 目录 Linux 之 Ubuntu 代码开发工具 Visual Studio Code(VSCode) 的安装与一些常用插件配置的简单整理 一、简单介绍 二、Visual Studio Code 下载与安装 三、 Visual Studio…

【操作系统】第一章总结

1.1 操作系统介绍 1.1.1 操作系统的概念、功能和目标 1.1.1 操作系统的概念、功能和目标&#xff08;系统资源的管理者、提供接口、作为扩充机器、虚拟机&#xff09;_StudyWinter的博客-CSDN博客 1.1.2 操作系统的特点 1.1.2 操作系统的特征&#xff08;并发、共享、虚拟、…

[附源码]SSM计算机毕业设计基于Java烟支信息管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【计算机视觉OpenCV基础】实验四 尺寸测量

实验四 尺寸测量 计算机视觉OpenCV基础实验合辑&#xff08;实验1234扩展&#xff09; 资源下载地址&#xff1a; https://download.csdn.net/download/weixin_53403301 合辑&#xff1a;&#xff08;加在下载地址后面&#xff09; /87113581 讲义&#xff08;包括理论、图例、…

RVMedia VCL 8.0 for Delphi 10.1-10.4

RVMedia VCL 8.0 for Delphi 10.1-10.4 RVMedia是Dolphi和Lazarus的VCL和LCL计算机的集合&#xff0c;为视频处理提供了不同的功能。在RVMedia中&#xff0c;可以使用GStreamer和FFmpeg库以H.264等高级格式显示视频。请注意&#xff0c;此组不包含这两个库的源代码&#xff0c;…

临近2022年末: Android 开发者的出路在哪?转行还是进阶?

你可能知道 Android 的近况&#xff0c;大体上现在移动开发已经不像以前那么活跃了&#xff0c;完全没有了几年安卓开发的那种火热势头。 与此同时&#xff0c;有很多发言说 Android 的开发冷却了&#xff0c;不行了&#xff0c;没有前途了 那么到底该如何看待这一现象呢&#…

C++对象内存布局

文章目录一、不存在virtual的对象和继承结构二、基类包含virtual的单继承结构2.1、派生类不覆盖虚函数的情况2.2、派生类覆盖虚函数的情况三、基类中包含virtual的多继承结构3.1、派生类中未覆盖基类中的虚函数3.1、派生类中覆盖了基类中的虚函数四、虚继承下单继承结构4.1、派…

面经汇总--校招--金山办公

参考链接&#xff1a;https://www.nowcoder.com/experience/639 用于汇总Java后端各个校招、社招、实习面经&#xff0c;附自己答案 文章目录&#x1f525;1. 一面&#x1f525;2.二面&#x1f525;2.HR面&#x1f525;1. 一面 ConcurrentHashMap原理&#xff1a;JDK1.8之后是v…

低代码与医疗的结合

全文 2566 字 阅读时间越约 8 分钟 本文首发于码匠技术博客 目录 低代码能为医疗领域带来哪些好处&#xff1f; 低代码有哪些功能适用于理疗领域&#xff1f; 低代码使用案例 关于码匠 现如今各行各业都在通过互联网技术加速数字化转型&#xff0c;医疗领域也不例外。低…

隐私计算 FATE - 多分类神经网络算法测试

一、说明 本文分享基于 Fate 使用 横向联邦 神经网络算法 对 多分类 的数据进行 模型训练&#xff0c;并使用该模型对数据进行 多分类预测。 二分类算法&#xff1a;是指待预测的 label 标签的取值只有两种&#xff1b;直白来讲就是每个实例的可能类别只有两种 (0 或者 1)&…