LeetCode面试经典150题(day 3)

news/2025/3/31 7:39:59/

169. 多数元素

难度:简单

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例 1:

输入:nums = [3,2,3]
输出:3

示例 2:

输入:nums = [2,2,1,1,1,2,2]
输出:2

提示:

  • n == nums.length
  • 1 <= 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 - 1
  • 0 <= 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);}
}

运行结果:

 


http://www.ppmy.cn/news/1063481.html

相关文章

连接数据库报错:2003-Can’t connect to Mysql server on ‘localhost’(10061)

今天在进行配置数据库的时候发现如下问题&#xff1a; 数据库出现2003错误&#xff0c;连接失败。 主要原因是我们的数据库服务没有开&#xff0c;winr&#xff0c;输入services.msc&#xff0c;打开本地服务 找到Mysql服务&#xff0c;右键启动即可。

一个简单的web应用程序的创建

一个简单的web应用程序的创建 1、数据库设计与创建1.1、数据库系统1.2、Navicat Premium1.3、Power Designer2、使用maven创建SpringBoot项目2.1、配置maven2.2、安装idea2.3、使用idea创建maven项目2.4、根据需要配置pom.xml文件、配置项目启动相关的文件2.5、写SpringBoot项目…

金字塔原理(演示的逻辑)

前言&#xff1a;如何做好PPT&#xff0c;在演讲中运用金字塔原理&#xff1f;今天学习最后一部分——演示的逻辑。 目录 在书面上呈现金字塔 常见方法 多级标题法 下划线法 数字编号法 行首缩进法 项目符号法 要点 在PPT演示文稿中呈现金字塔 基本原则 文字图表占…

ctfshow web入门 web103-web107

1.web103 和102一样 payload: v2115044383959474e6864434171594473&v3php://filter/writeconvert.base64-decode/resource1.php post v1hex2bin2.web104 值只要一样就可以了 payload: v21 post v113.web105 考查的是$$变量覆盖,die可以带出数据,输出一条消息&#xf…

Vue2 使用插件 Volar 报错:<template v-for> key should be placed on the <template> tag.

目录 问题描述 版本描述 问题定位 问题解决 VS Code 插件地址 问题描述 在 VS Code 上使用插件 Volar 开发 Vue3 项目&#xff0c;然后去改 Vue2 项目时&#xff0c;对没有放在<template v-for> 元素上的 :key&#xff0c;会提示 <template v-for> key should…

IDEA书签使用

在你想要创建书签的地方按F11就能创建书签 在行那里按这一行前面就会打个√&#xff0c;再按一下F11他又会删除 当然也可以按CtrlF11自己定义是√还是字母或者是数字 也可以在文件上加书签 想要快速定位到书签&#xff0c;按ShiftF11查看书签&#xff0c;双击就定位到你这个…

Springboot整合Durid-数据库连接池

一、Springboot使用Durid快速开始 1、 添加依赖 <!--druid连接池--> <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.17</version> </dependency> <…

grep命令的用法

文章目录 前言一、使用说明二、应用举例 前言 grep 命令用于查找文件里符合条件的字符串。 一、使用说明 -r: 如果需要搜索目录中的文件内容, 需要进行递归操作, 必须指定该参数 -i: 对应要搜索的关键字, 忽略字符大小写的差别 -n: 在显示符合样式的那一行之前&#xff0c;标…