面试经典150题(5-7)

leetcode 150道题 计划花两个月时候刷完,今天(第二天)完成了两道(5-7)150:

  1. (169. 多数元素) 题目描述:
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。

第一版(这个我是一次就写出来了,这个就是投票的简单类型,当然今天这个最多元素也可以排序后直接返回中间元素也行)

class Solution {public int majorityElement(int[] nums) {int len=nums.length;if(len<=2){return nums[0];}int res=1;int temp=nums[0];for(int i=1;i<len;i++){if(temp==nums[i]){res++;}else{if(res==0){res=1;temp=nums[i];}res--;}}return temp;}
}
  1. (189. 轮转数组)题目描述:
给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

第一版(确实刚开始没想到好办法,就用了数组暂存,然后登挪完其他的,把这些加到数组头部,但是这种题必须先求余!!)

class Solution {public void rotate(int[] nums, int k) {int len=nums.length;if(len<=1)return ;int count=k%len;int[] temp=new int[count];for(int i=0;i<count;i++){temp[i]=nums[i+len-count];}for(int i=len-count-1;i>=0;i--){nums[i+count]=nums[i];}for(int i=0;i<count;i++){nums[i]=temp[i];}}
}

第二版(看完解析恍然大悟,希望我下次再碰到了能直接恍然大悟)

class Solution {public void rotate(int[] nums, int k) {int len=nums.length;if(len<=1)return;int count=k%len;if(count==0)return ;// 反转reserve(nums,0,len-1);// 再反转 前半部分(【0-count-1】)reserve(nums,0,count-1);// 再反转 后半部分(【count-len-1】)reserve(nums,count,len-1);}public void reserve(int[] nums,int first,int last){while(first<last){int temp=nums[last];nums[last--]=nums[first];nums[first++]=temp;}}
}
  1. (121. 买卖股票的最佳时机)题目描述:
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。
你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0

第一版(这个题我也是已经刷了好多遍了,还是记不住啊,还是没思路就直接暴力求解了,但是 leetcode 能过,哈哈哈)

class Solution {public int maxProfit(int[] prices) {int res=0;int temp=Integer.MAX_VALUE;for(int i=0;i<prices.length-1;i++){if(prices[i]>=temp)continue;temp=prices[i];for(int j=i+1;j<prices.length;j++){res=Math.max(res,prices[j]-prices[i]);}}return res;}
}

第二版(翻了解题的评论才明白了–“降价时候找最低价–涨价时候 算差价”)

class Solution {public int maxProfit(int[] prices) {// 降价时候找最低价--涨价时候 算差价 牛int minPrice=Integer.MAX_VALUE;int res=0;for(int price:prices){if(price<minPrice){minPrice=price;}else{res=Math.max(res,price-minPrice);}}return res;}
}

今天看了三个题有进步,加油!!!
我们的目标是早日跳槽!!!!

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

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

相关文章

int 和 Integer 有什么区别,还有 Integer 缓存的实现

✨前言✨   Java本文主要介绍Java int 和 Integer的区别以及Integer 缓存的实现 &#x1f352;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f352;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区留言 文章目…

用C++实现队列顺序结构的基本操作

//队列顺序结构的基本操作&#xff1a; #include"stdio.h" #include"String" #define QueueSize 100 typedef char ElemType; typedef struct { ElemType data[QueueSize]; /*保存队中元素*/int front,rear; /*队头和队尾指针*/ } SqQueue; void Init…

使用STM32定时器实现精确的时间测量和延时

✅作者简介&#xff1a;热爱科研的嵌入式开发者&#xff0c;修心和技术同步精进&#xff0c; 代码获取、问题探讨及文章转载可私信。 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。 &#x1f34e;获取更多嵌入式资料可点击链接进群领取&#xff0c;谢谢支持&#xff01;…

stm32Flash操作

//G0B0 flash大小 0x08000000-0x0807FFFF 512K(0400 1K)//2k 1页 //初始化标记数据地址 放最前面 脱机烧写器可擦除掉 #define CONST_INITMARKDATA_ADDRESS (0x0807D000UL) //2k 1页 //射频数据地址 #define CONST_FREQDATA_ADDRESS (0x0807F000UL) //2…

大数据技术4:Lambda和Kappa架构区别

前言&#xff1a;在大数据处理领域&#xff0c;两种突出的数据架构已成为处理大量数据的流行选择&#xff1a;Lambda 架构和 Kappa 架构。这些架构为实时处理和批处理提供了强大的技术解决方案&#xff0c;使组织能够从其数据中获得有价值的见解。随着互联网时代来临&#xff0…

Python VSCode 配置固定的脚本入口

Python VSCode 配置固定的脚本入口 打开或者新建一个启动配置 选择 .vscode目录下 launch.json文件 将 “program”: “${file}” 替换成 “program”: “mian.py”, //完成你自己的入口.py文件名即可 json启动配置文件 {// Use IntelliSense to learn about possible attrib…

4-redis高级-redis持久化(RDB 持久化方案、AOF持久化、RDB和AOF混合持久化)、redis主从复制

1 redis持久化 1.1 RDB 持久化方案 1.2 AOF持久化 1.3 混合持久化 2 redis主从复制 1 redis持久化 # 把redis数据从内存保存到硬盘上的过程称之为持久化# 所有的数据库&#xff0c;持久化方案快照&#xff1a;某时某刻数据的一个完成备份-mysql的Dump&#xff1a; mysqldump …

【ELK03】ES 索引的Mapping映射详解、数据类型和settings属性设置

一、ES 索引的映射和设置 1.MAPPING 映射(MAPPING)就是es中一个决定了文档如何存储,如何生成索引,字段各种类型定义的过程.类似于我们在关系型数据库中创建一个表格数据之前先定义表格有哪些字段,每个字段是什么类型,然后数据会按照这个配置写入表格,ES中同样是这个过程,它由…

数据结构:顺序表——相关习题2

【2018统考】给定一个含n个整数的数组&#xff0c;设计一个时间上尽可能高效的算法&#xff0c;找到数组中未出现的最小正整数。 void find_min_intnum(int A[],int n){int B[5*n]{0};int i;for (i 0; i < n; i){if(A[i]>0){B[A[i]];}}for(i1;i<5*n;i){if(B[i]0){pr…

面向对象中的单例模式

1、什么是设计模式 设计模式就是前人根据实际的问题提出的问题解决方案&#xff0c;我们把这种就称之为设计模式。 2、单例模式 单例模式是一种常见的设计模式&#xff01; 所谓的设计模式&#xff0c;不是一种新的语法&#xff0c;而是人们在实际的应用中&#xff0c;面对…

【银行测试】金融项目+测试方法范围分析,功能/接口/性能/安全...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、金融行业软件特…

3GPP标准查看、下载和几个UE相关系列标准

由于一直做终端侧协议。最近以UE为核心重新下载了一系列文档。 总结并举例一下分类标准。 如何查看3GPP标准列表 实际上在3GPP网站如下链接&#xff1a;Specifications by Series&#xff0c;每个系列以及分类都说的很清楚。 几个系列分类举例 和终端协议层工作比较关系密切…

如何使用Java Websocket实现实时数据监控功能?

随着互联网应用的不断发展&#xff0c;实时数据监控功能成为了许多应用的必备功能之一。本文将介绍如何使用Java WebSocket实现实时数据监控功能&#xff0c;并提供具体的代码示例。 关键词&#xff1a;Java WebSocket、实时数据监控、代码示例 一、什么是WebSocket&#xff…

ModuleNotFoundError: No module named ‘dlib‘

解决&#xff1a;ModuleNotFoundError: No module named ‘dlib’ 文章目录 解决&#xff1a;ModuleNotFoundError: No module named dlib背景报错问题报错翻译报错位置代码报错原因解决方法方法一&#xff0c;直接安装方法二&#xff0c;手动下载安装方法三&#xff0c;编译安…

setuid 的风险及开发过程中的避免方式

使用setuid&#xff08;Set User ID&#xff09;功能将执行程序的有效用户 ID 设置为文件所有者的用户 ID。这意味着执行程序将以文件所有者的特权运行&#xff0c;而不是以执行者自己的特权运行。 尽管setuid是一个有用的功能&#xff0c;但它也会带来一些安全风险。下面是几…

Linux C语言 37- 进程间通信IPC

Linux C语言 37-进程间通信IPC 本节关键字&#xff1a;C语言 进程间通信 信号 管道 消息队列 共享内存 网络通信&#xff08;套接字&#xff09; 相关库函数&#xff1a; 提示&#xff1a;先做内容框架梳理&#xff0c;后期进行完善补充&#xff01; 什么是进程间通信&#…

blender 数字键盘上的快捷键

数字0可以切换到相机视角&#xff0c;即从相机的位置和角度查看场景。数字1、3、7分别可以切换到正交的前视图、右视图和顶视图&#xff0c;即沿着X、Y、Z轴的垂直投影。数字5可以切换正交视图和透视视图&#xff0c;即是否考虑远近的视觉差异。数字2、4、6、8分别可以顺时针或…

SD之lora训练

目录 为什么要训练自己的模型 SD模型微调方法 准备素材 1 确定要训练的LoRA类型 2 图片收集 3 图片预处理 4 图片标注 安装Koyha_ss 训练lora 1.准备参数和环境 2.启动训练 使用模型 1 拷贝训练过的lora模型 2 启动SD WebUI进行图像生成 为什么要训练自己的模型 …

webpack该如何打包

1.我们先创建一个空的大文件夹 2.打开该文件夹的终端 输入npm init -y 2.1.打开该文件夹的终端 2.2在该终端运行 npm init -y 3.安装webpack 3.1打开webpack网址 点击“中文文档” 3.2点击“指南”在点击“起步” 3.3复制基本安装图片画线的代码 4.在一开始的文件夹下在创建一…

【Android】使用Netty库来实现Socket接收

在Android中使用Netty来实现Socket接收是可行的。Netty是一个高性能的网络通信框架&#xff0c;支持多种协议&#xff0c;包括原生的Socket通信。 以下是一个简单的示例代码&#xff0c;演示如何使用Netty在Android中实现Socket接收&#xff1a; 首先&#xff0c;在你的Andro…