面试经典150题【1-10】

文章目录

  • 面试经典150题【1-10】
    • 88. 合并两个有序数组
    • 27.移除元素
    • 26.删除有序数组中的重复项
    • 80.删除有序数组中的重复项II
    • 169.多数元素
    • 189.轮转数组
    • 121.买卖股票的最佳时机1
    • 122. 买卖股票的最佳时机 II
    • 55.跳跃游戏![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ffde8c160eba4e4599601f3d131c0dec.png)
    • 45.跳跃游戏II
    • 274.H指数

面试经典150题【1-10】

88. 合并两个有序数组

逆向双指针,打卡题

27.移除元素

也是逆向双指针,不过要注意思路和代码的简洁
在这里插入图片描述

public static int removeElement(int[] nums, int val) {int left = 0;int right = nums.length;while (left < right) {if (nums[left] == val) {nums[left] = nums[right - 1];right--;} else {left++;}}return left;
}

如果右边扔进来的也是val,那么在下一次循环的时候还会再扔。
也能解决[3,3],val=3的这种情况。
要注意他写的是,只左移动(right–)或只右移动(left++)

26.删除有序数组中的重复项

在这里插入图片描述

class Solution {public int removeDuplicates(int[] nums) {int index = 0;for (int i = 1; i < nums.length; i++) {//找到不重复的元素,赋值到数组的开头if (nums[i] != nums[index]) {nums[++index] = nums[i];}}return index + 1;}
}

精简的思路决定一切

80.删除有序数组中的重复项II

在这里插入图片描述

class Solution {public int removeDuplicates(int[] nums) {int n=nums.length;if(n<2) {return n;}int slow=2,fast=2;while(fast<n){if(nums[fast]!=nums[slow-2]){nums[slow]=nums[fast];slow++;}fast++;}return slow;}
}

双指针的思路。

169.多数元素

摩尔投票法,很简单。

189.轮转数组

在这里插入图片描述
1.开辟一个新数组去做,然后再拷贝回原数组
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
参数
src − 这是源数组。
srcPos − 这是源数组中的起始位置。
dest − 这是目标数组。
destPos − 这是目标数据中的起始位置。
length − 这是要复制的数组元素的数量。
2.新开辟一个数组,空间太大了。可以只新建一个临时变量temp
1,4,7,3,6,2,5,1.是有顺序的,也可能是几个顺序环。反正只搞一个变量也够用
3.先全部倒转,7,6,5,4,3,2,1
然后倒转前k个,还有后面的几个。5,6,7,1,2,3,4即为答案。

class Solution {public void rotate(int[] nums, int k) {k %= nums.length;reverse(nums, 0, nums.length - 1);reverse(nums, 0, k - 1);reverse(nums, k, nums.length - 1);}public void reverse(int[] nums, int start, int end) {while (start < end) {int temp = nums[start];nums[start] = nums[end];nums[end] = temp;start += 1;end -= 1;}}
}

121.买卖股票的最佳时机1

在这里插入图片描述

 public int maxProfit(int[] prices) {int profit=0,lowestPrice=Integer.MAX_VALUE;for(int i=0;i<prices.length;i++){lowestPrice=Math.min(lowestPrice,prices[i]);profit=Math.max(profit,prices[i]-lowestPrice);}return profit;}

122. 买卖股票的最佳时机 II

在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。
就是可以多次购买和出售的意思。
那直接求所有正梯度的和就行。

55.跳跃游戏在这里插入图片描述

从前往后去刷就行

class Solution {public boolean canJump(int[] nums) {if(nums.length==1){return true;}int cover =nums[0];for(int i=0;i<=cover;i++){cover=Math.max(cover,nums[i]+i);if(cover>=nums.length-1){return true;}}return false;}
}

45.跳跃游戏II

在这里插入图片描述

class Solution {public int jump(int[] nums) {if(nums.length==1) return 0;int nextEnd=nums[0],end=0;int ans=0;//是nums.length-1,要遍历所有for(int i=0;i<nums.length-1;i++){nextEnd=Math.max(nextEnd,i+nums[i]);//到达一步的终点之后,找累计到此的下一步的终点if(end==i){ans++;end=nextEnd;}}return ans;}
}

274.H指数

在这里插入图片描述
一种就是先排序,然后从后往前判断是不是H指数

Arrays.sort(citations);
int h = 0, i = citations.length - 1; 
while (i >= 0 && citations[i] > h) {h++; i--;
}
return h;

或者定义一个大数组来计数,这个数组也不是很大,因为H指数最大就是n
int[] counter = new int[n + 1];
然后统计,然后从后往前找H指数。
或者对H值进行二分,0-N的范围。总共要执行LogN轮,每次执行需要N(看是否满足H值条件)。

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

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

相关文章

【自然语言处理】seq2seq模型—机器翻译

清华大学驭风计划课程链接 学堂在线 - 精品在线课程学习平台 (xuetangx.com) 代码和报告均为本人自己实现&#xff08;实验满分&#xff09;&#xff0c;只展示主要任务实验结果&#xff0c;如果需要详细的实验报告或者代码可以私聊博主 有任何疑问或者问题&#xff0c;也欢…

【c++】拷贝构造函数

1.特征 1.拷贝构造函数是构造函数的一个重载形式。 2.若显示定义了拷贝构造函数&#xff0c;编译器就不会自动生成构造函数了。 3.拷贝构造函数的参数只有一个且必须是类型对象的引用&#xff0c;使用传值方式编译器直接报错&#xff0c;因为会引发无穷递归调用。 4.若未显…

elementui 中 el-date-picker 控制选择当前年之前或者之后的年份

文章目录 需求分析 需求 对 el-date-picker控件做出判断控制 分析 给 el-date-picker 组件添加 picker-options 属性&#xff0c;并绑定对应数据 pickerOptions html <el-form-item label"雨量年份&#xff1a;" prop"date"><el-date-picker …

手写myscrapy(三)

我们现在具体讲解一下主要功能的实现 我们先定义一个接口类 名称&#xff1a;MyObject 主要定义需要实现的方法定义 代码如下&#xff1a; class MyObject(object):start_urls: Optional[list] Nonename: str Nonekeywords Falsecookies : dict Noneencode :str Nonetime…

TypeScript(一):TypeScript基本理解

TypeScript基本理解 为什么使用TS JavaScript发展至今&#xff0c;没有进行数据类型的验证而我们知道&#xff0c;在编程阶段&#xff0c;错误发现的越早越好而TS就解决了JS的这个问题 认识TypeScript TypeScript是拥有类型的JavaScript超级&#xff0c;它可以编译成普通、…

洛谷P8627 饮料换购 题解

#题外话&#xff08;第27篇题解&#xff09;&#xff08;本题为普及-难度&#xff09; #先看题目 题目链接https://www.luogu.com.cn/problem/P8627 #思路&#xff08;用while循环&#xff0c;循环到山穷水尽为止&#xff0c;用一个计数的计量&#xff09; #代码 #include …

数据分析(一) 理解数据

1. 描述性统计&#xff08;summary&#xff09; 对于一个新数据集&#xff0c;首先通过观察来熟悉它&#xff0c;可以打印数据相关信息来大致观察数据的常规特点&#xff0c;比如数据规模&#xff08;行数列数&#xff09;、数据类型、类别数量&#xff08;变量数目、取值范围…

论文解读:Masked Generative Distillation

文章汇总 话题 知识蒸馏 创新点 带掩盖的生成式蒸馏 方法旨在通过学生的遮罩特征来生成老师的特征(通过遮盖学生部分的特征来生成老师的特征)&#xff0c;来帮助学生获得更好的表现 输入:老师:&#xff0c;学生:&#xff0c;输入:&#xff0c;标签:&#xff0c;超参数: 1:使…

Apache DolphinScheduler中ZooKeeperCDH不兼容问题的解决方案

背景 看到Apache DolphinScheduler社区群有很多用户反馈和讨论这块问题&#xff0c;针对不兼容的问题&#xff0c;不仅需要自己重新编译各一个新包&#xff0c;而且因为默认是使用zk-3.8的配置&#xff0c;所以会出现不兼容问题。使用zk-3.4配置即可适配3.4.x 解决办法&#…

Web 扫描神器:WhatWeb 保姆级教程(附链接)

一、介绍 WhatWeb 是一款用于识别网站技术栈和特征的开源Web扫描工具。它可以自动分析网站的响应并识别出使用的Web框架、CMS、服务器、JavaScript库等技术组件。WhatWeb的目标是通过分析网站的内容&#xff0c;提供有关目标的技术信息&#xff0c;这对于安全测试、漏洞评估和…

简析剩余电流动作继电器在油气田站场内监测路灯接地方式

安科瑞电气股份有限公司 上海嘉定 201801 【摘要】油气站站场内路灯接地方式多采用TT系统&#xff0c;部分采用TN-S系统&#xff0c;但无论TT系统还是TN-S系统均存在相应问题&#xff0c;为解决相应问题&#xff0c;本文建议油气田站场内路灯接地方式采用TN-S系统局部TT系统。…

数组转二叉树的一种方法-java(很特殊)

上代码 Node节点的代码 public class ThreadNode {private int data;private ThreadNode left;private boolean leftTag; // 左子节点是否为线索private ThreadNode right;private boolean rightTag; // 右子节点是否为线索// ... 省略get和set方法// ... 省略构造方法// ... …