LeetCode面试经典150题(day 3)
169. 多数元素
难度:简单
给定一个大小为
n的数组nums,返回其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例 1:
输入:nums = [3,2,3] 输出:3示例 2:
输入:nums = [2,2,1,1,1,2,2] 输出:2提示:
n == nums.length1 <= n <= 5 * 104-109 <= nums[i] <= 109进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。
思路:采用两两相消的方法,因为多数元素出现的次数是大于n/2的,所以只要两两不相等的元素相消,剩下的那个元素就肯定是多数元素了
代码:
class Solution {public int majorityElement(int[] nums) {int more = nums[0];int count = 1;for(int i = 1; i < nums.length;i++ ){if(more == nums[i]) {count++;}else if(count == 0) {more = nums[i];count++;}else {count--;}}return more;} }运行结果:
189. 轮转数组
难度:中等
相关企业
给定一个整数数组
nums,将数组中的元素向右轮转k个位置,其中k是非负数。示例 1:
输入: nums = [1,2,3,4,5,6,7], k = 3 输出:[5,6,7,1,2,3,4]解释: 向右轮转 1 步:[7,1,2,3,4,5,6]向右轮转 2 步:[6,7,1,2,3,4,5]向右轮转 3 步:[5,6,7,1,2,3,4]示例 2:
输入:nums = [-1,-100,3,99], k = 2 输出:[3,99,-1,-100] 解释: 向右轮转 1 步: [99,-1,-100,3] 向右轮转 2 步: [3,99,-1,-100]提示:
1 <= nums.length <= 105-231 <= nums[i] <= 231 - 10 <= k <= 105进阶:
- 尽可能想出更多的解决方案,至少有 三种 不同的方法可以解决这个问题。
- 你可以使用空间复杂度为
O(1)的 原地 算法解决这个问题吗?
思路:翻转三次,如图所示
代码:
class Solution {public void reverse(int[] nums,int left,int right){ while(left < right){int tmp = nums[left];nums[left] = nums[right];nums[right] = tmp;left++;right--;}}public void rotate(int[] nums, int k) {int length = nums.length;k%=length;reverse(nums,0,length-1);reverse(nums,0,k-1);reverse(nums,k,length-1);} }运行结果:
相关文章:
LeetCode面试经典150题(day 3)
169. 多数元素 难度:简单 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums …...
掌握这个工具,轻松管理所有物流信息
在电子商务高度发达的今天,物流快递行业在全球范围内发挥着至关重要的作用。然而,在如此复杂的物流环境中,快递退回件的管理和查询成为了一个难题。为了解决这个问题,我们有一个神奇的工具——快递批量查询高手。 快递批量查询高…...
1.Python操作txt文本
文章目录 1.Python读取一个txt文件的内容并将其写入到另一个txt文件2.Python读取一个未知编码的文件并将其设置为指定编码格式3.Python实现txt文件中字符串的替换 1.Python读取一个txt文件的内容并将其写入到另一个txt文件 # -*- encoding:gb2312 -*- import chardetdef read_…...
Redis 主从复制和哨兵模式
一、概念 主从复制,是指将一台 Redis 服务器的数据,复制到其他的 Redis 服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower)。数据的复制是单向的,只能由主节点…...
【已解决】在 SpringBoot 中使用 CloseableHttpClient 调用接口时,接收参数中的中文变为“?“
问题描述 由于项目需要,需要在代码中使用POST请求去调用另一个服务的接口,即不通过前端,A 项目直接在方法中发起HTTP请求调用 B 项目的接口,当请求体中的参数有中文时,参数接收后中文会变为“?”。 具体原因是参数的…...
研磨设计模式day15策略模式
场景 问题描述 经常会有这样的需要,在不同的时候,要使用不同的计算方式。 解决方案 策略模式 定义: 解决思路:...
Densenet模型详解
模型介绍 DenseNet的主要思想是密集连接,它在卷积神经网络(CNN)中引入了密集块(Dense Block),在这些块中,每个层都与前面所有层直接连接。这种设计可以让信息更快速地传播,有助于解…...
华为eNSP模拟器中,路由器如何添加serial接口
在ensp模拟器中新建拓扑后,添加2个路由器。 在路由器图标上单击鼠标右键,选择设置选项。 在【视图】选项卡的【eNSP支持的接口卡】窗口查找serial接口卡。 选择2SA接口卡,将其拖动到路由器空置的卡槽位。 如上图所示,已经完成路由…...
Linux脚本- 执行当前文件下前500个.c文件,并将每个文件对应的执行结果重定向到同名的.ok文件中
需求:执行当前文件下前500个.c文件,并将每个文件对应的执行结果重定向到同名的.ok文件中 以下是一个用于实现该功能的 Bash 脚本。 #!/bin/bash# 计数器,用于限制处理的文件数量 counter0# 遍历当前目录下的所有 .c 文件 for c_file in *.c…...
高速公路自动驾驶汽车超车控制方法研究
目录 摘要 ............................................................................................................ I Abstract ...................................................................................................... II 目录 ...............…...
Java 多线程系列Ⅰ(创建线程+查看线程+Thread方法+线程状态)
多线程基础 一、创建线程的五种方法前置知识1、方法一:使用继承Thread类,重写run方法2、方法二:实现Runnable接口,重写run方法3、方法三:继承Thread,使用匿名内部类4、方法四:实现Runnable&…...
无入侵接口文档smart-doc
Smart-doc优点: 1.非侵入式生成接口文档 2.减少接口文档的手动更新麻烦&保证了接口文档和代码的一致 3.随时可生成最新的接口文档 4.保持团队代码风格一致:smart-doc支持javadoc,必须按照这个才能生成有注释的接口文档 最终效果 1.导入依赖 <pl…...
nacos配置超级管理员账户,只能mysql存储数据(或者其他数据库)
nacos本身是不允许授权超级管理员账号的,也就是角色名“ROLE_ADMIN”。作者在页面上试过了,不必再次尝试改的方式是直接改数据库里面的数据...
【前端自动化部署】,Devops,CI/CD
DevOps 提到Jenkins,想到的第一个概念就是 CI/CD 在这之前应该再了解一个概念。 DevOps Development 和 Operations 的组合,是一种方法论,并不特指某种技术或者工具。DevOps 是一种重视 Dev 开发人员和 Ops 运维人员之间沟通、协作的流程。…...
【C语言】探讨蕴藏在表达式求解中的因素
🚩纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:C语言 🔥该篇将探讨 操作符 和 类型转换 对表达式求解的影响。 目录: 隐式类型转换算术转换操作符的属性❤️ 结语 隐…...
【Flutter】Flutter 使用 video_player 播放视频
【Flutter】Flutter 使用 video_player 播放视频 文章目录 一、前言二、video_player 简介三、安装和配置四、基本使用五、完整示例 六、高级功能七、总结 一、前言 大家好,我是小雨青年,今天我要和大家分享一款非常实用的 Flutter 包——video_player。…...
如何使用 ChatGPT 快速制作播客和其他长篇内容
使用ChatGPT快速制作播客和其他长篇内容是一个高效且具有一定创造性的过程。以下是一些详细的步骤和技巧,以帮助你充分利用ChatGPT来制作高质量的内容。 一、准备阶段 确定主题或话题:在开始制作之前,你需要明确你的播客或长篇内容将聚焦的主…...
JavaScript基础语法02——JS书写位置
哈喽,大家好,我是雷工! 今天继续学习JavaScript基础语法,JS的书写位置,俗话说:好记性不如烂笔头,边学边记,方便回顾。 1、行内JavaScript 代码写在标签内部 示例: <…...
LInux快捷命令
切换到行头:ctrla 或者 ctrlhome 切换到行尾:ctrale 或者 ctrlend 光标向左切换一个单词:ctrl← 光标向右切换一个单词:ctrl→ 历史命令搜索:history 历史命令匹配第一条执行:!x (x表示历史命令…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...


