面试经典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.mfbz.cn/a/393034.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

8.8 矢量图层点要素点聚合(Point cluster)使用

文章目录 前言点聚合&#xff08;Point cluster&#xff09;QGis代码实现 总结 前言 本章介绍如何使用点聚合&#xff08;Point cluster&#xff09;说明&#xff1a;文章中的示例代码均来自开源项目qgis_cpp_api_apps 点聚合&#xff08;Point cluster&#xff09; 点要素过…

实例讲解join方法的使用

Python的join()方法用于将序列中的元素以指定的字符连接生成一个新的字符串 语法 str.join(sequence) 参数 sequence 要连接的元素序列、字符串、元组、字典 返回值 返回通过指定字符连接序列中的元素后生成的新的字符串 实例 str "-"; seq ("a"…

Facebook MarketPlace自养号测评在海外FB商城如何精准引流私域?(上)

2024直击痛点&#xff1a;Facebook MarketPlace 如何引流裂变 (Facebook商城)? “Facebook MarketPlace&#xff08;FB商城&#xff09;、Instagram、Whatsapp、Twitter、Reddit、Youtube、Line、VK等怎样超低成本进行海外精准获客&#xff08;引流&#xff09;”&#xff0c…

网页打开本地exe

制作注册表文件tim.reg&#xff0c; Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\timClient] "timClient" "URL Protocol"""[HKEY_CLASSES_ROOT\timClient\DefaultIcon] "D:\\Program Files (x86)\\Tencent\\TIM\\Bin\\QQSc…

微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用

&#x1f3f7;️个人主页&#xff1a;鼠鼠我捏&#xff0c;要死了捏的主页 &#x1f3f7;️系列专栏&#xff1a;Golang全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&…

4核8G云服务器能承受多少人访问?

4核8G服务器支持多少人同时在线访问&#xff1f;阿腾云的4核8G服务器可以支持20个访客同时访问&#xff0c;关于4核8G服务器承载量并发数qps计算测评&#xff0c;云服务器上运行程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&…

基于java springboot+mybatis学生学科竞赛管理管理系统设计和实现

基于java springbootmybatis学生学科竞赛管理管理系统设计和实现 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各…

STM32CubeMX 配置 STM32F407时钟树和烧录方式

时钟树 要先把High Speed Clock设置为外部晶振&#xff0c;再去设置时钟树 PLL选用高速外部时钟线&#xff08;HSE&#xff09; Input frequency 数值为外部晶振&#xff0c;大多开发板上为8M SYSCLK 为系统时钟&#xff0c;F407为168MHz APB2 外设时钟线为系统时钟的一半 APB…

统信UOS终端:使用方法解析系列(中篇)

原文链接&#xff1a;统信UOS终端&#xff1a;使用方法解析系列&#xff08;中篇&#xff09; 亲爱的读者们&#xff0c;继我们上次关于统信UOS终端基础使用的介绍后&#xff0c;今天我们将在系列文章的中篇中&#xff0c;深入探讨终端的进阶使用方法&#xff0c;包括自定义命令…

LeetCode.589. N 叉树的前序遍历

题目 589. N 叉树的前序遍历 分析 我们之前有做过LeetCode的 144. 二叉树的前序遍历&#xff0c;其实对于 N 插树来说和二叉树的思路是一模一样的。 二叉树的前序遍历是【根 左 右】 N叉树的前序遍历顺序是【根 孩子】&#xff0c;你可以把二叉树的【根 左 右】想象成【根 孩…

什么是软件测试?软件测试的目的与原则是什么?

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

企业大宽带服务器用哪里最合适

如今&#xff0c;数字经济的发展速度不断加快&#xff0c;进入数字化跑道的企业&#xff0c;每天都在大量输出、共享、存储数字内容&#xff0c;想要更高效、安全地让用户看到内容&#xff0c;企业的服务器需要满足大带宽、低延时、高并发等要求。 中小企业受限于资金、资源等…

BUGKU-WEB 头等舱

题目描述 题目截图如下&#xff1a; 进入场景看看&#xff1a; 解题思路 先看看源码再看看F12请求和响应 相关工具 略 解题步骤 查看源码&#xff0c;好家伙真的什么也没有 2. 看看F12请求和响应&#xff0c;找到了 得到Flag flag{a49c7aba1014c3673ec9982946d0545a…

LeetCode 0429.N 叉树的层序遍历:广度优先搜索(BFS)

【LetMeFly】429.N 叉树的层序遍历&#xff1a;广度优先搜索(BFS) 力扣题目链接&#xff1a;https://leetcode.cn/problems/n-ary-tree-level-order-traversal/ 给定一个 N 叉树&#xff0c;返回其节点值的层序遍历。&#xff08;即从左到右&#xff0c;逐层遍历&#xff09;…

nba2k24 郭艾伦面补

nba2k24 郭艾伦面补 nba2k23-nba2k24通用 郭艾伦面补 下载地址&#xff1a; https://www.changyouzuhao.cn/9460.html

03 类和对象 1

目录 面向过程和面向对象初步认识类的引入类的定义类的访问限定符及封装类的作用域类的实例化类的对象大小的计算类成员函数的this指针 1. 面向过程和面向对象初步认识 c语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析求解问题的步骤&#xff0c;通过函数调用逐步…

免费邮件群发工具有哪些?群发邮件的软件?

免费邮件群发软件盘点&#xff01;EDM免费邮件营销软件哪个好&#xff1f; 电子邮件营销已成为许多企业和个人推广的重要手段。而免费邮件群发工具则成为了这些用户节约成本、提高效率的首选。蜂邮将为您详细介绍几款备受欢迎的免费邮件群发工具&#xff0c;帮助您在众多选择中…

从kafka如何保证数据一致性看通常数据一致性设计

一、前言 在数据库系统中有个概念叫事务&#xff0c;事务的作用是为了保证数据的一致性&#xff0c;意思是要么数据成功&#xff0c;要么数据失败&#xff0c;不存在数据操作了一半的情况&#xff0c;这就是数据的一致性。在很多系统或者组件中&#xff0c;很多场景都需要保证…

JVM-JVM调优基础(理论)

申明&#xff1a;文章内容是本人学习极客时间课程所写&#xff0c;作为笔记进行记录&#xff0c;文字和图片基本来源于课程资料&#xff0c;在某些地方会插入一点自己的理解&#xff0c;未用于商业用途&#xff0c;侵删。 原资料地址&#xff1a;课程资料 JVM参数 标准参数 …

- 工程实践 - 《QPS百万级的有状态服务实践》02 - 冷启动和热更新

本文属于专栏《构建工业级QPS百万级服务》 继续上篇《QPS百万级的有状态服务实践》01 - 存储选型实践。如图1架构&#xff0c;我们已经解决了数据生产的问题。 图1 但是我们的服务已经在运行了&#xff0c;并实时处理大量的请求&#xff0c;我们如何把内存中的数据版本更新呢。…