leetCode刷题记录3-面试经典150题

news2024/11/27 8:40:14

文章目录

  • 不要摆,没事干就刷题,只有好处,没有坏处,实在不行,看看竞赛题
    • 面试经典 150 题
      • 80. 删除有序数组中的重复项 II
      • 189. 轮转数组
      • 122. 买卖股票的最佳时机 II

不要摆,没事干就刷题,只有好处,没有坏处,实在不行,看看竞赛题

面试经典 150 题

面试经典 150 题

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

80. 删除有序数组中的重复项 II
这几题都很水

public int removeDuplicates(int[] nums) {
    int k = 0, count = 1;
    for (int i = 1; i < nums.length; i++) {
        if (nums[i] != nums[k]) {
            nums[++k] = nums[i];
            count = 1;
        } else if (++count <= 2) {
            nums[++k] = nums[i];
        }
    }
    return k + 1;
}

189. 轮转数组

189. 轮转数组

408原题,4刷了,现在感觉很水了

注意k可能很大,需要对长度取一下模

public void rotate(int[] nums, int k) {
    int n = nums.length-1;
    k = k%(n+1);
    reverse(nums,0,n-k);
    reverse(nums,n-k+1,n);
    reverse(nums,0,n);
}

public void reverse(int[] nums, int l,int r) {
    while (l<r){
        int t = nums[l];
        nums[l] = nums[r];
        nums[r] = t;
        l++;r--;
    }
}

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

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

没啥头绪,先暴力拿分,也是能力

DFS暴力枚举,过了198个,也不错了
剩下两个超时

public int maxProfit(int[] prices) {
    dfs(prices,-1,0,0);
    return max;
}

int max = -1;
public int dfs(int[] prices,int curr,int index,int sum){
    //System.out.println(index+" "+sum);
    max = Math.max(max,sum);
    if(index>=prices.length) return 0;

    if(curr!=-1){//当前持有股票
        // 不卖
        dfs(prices,curr,index+1,sum);
        // 卖
        if(prices[index]>curr) dfs(prices,-1,index+1,sum+prices[index]);
    }else {//当前无股票
        // 买
        dfs(prices,prices[index],index+1,sum-prices[index]);
        // 不买
        dfs(prices,-1,index+1,sum);
    }
    return 0;
}

先自己优化时间
强制加缓存,竟然超出内存限制

public int maxProfit(int[] prices) {
    return dfs(prices,-1,0);
}
HashMap<String, Integer> cache = new HashMap<>();
public int dfs(int[] prices,int curr,int index){
    //System.out.println(index+" "+sum);
    if(index>=prices.length) return 0;
    String key = ""+curr+"-"+index;
    if(cache.get(key)!=null) return cache.get(key);
    int ans = 0;
    if(curr!=-1){//当前持有股票
        // 不卖
        int t1 = dfs(prices,curr,index+1);
        int t2=0;
        // 卖 sum+prices[index]
        if(prices[index]>curr) {
            t2 = dfs(prices,-1,index+1)+prices[index];
        }
        ans = Math.max(t1,t2);
    }else {//当前无股票
        // 买 sum-prices[index]
        int t1 = -prices[index]+dfs(prices,prices[index],index+1);
        // 不买 sum
        int t2 = dfs(prices,-1,index+1);
        ans = Math.max(t1,t2);
    }
    cache.put(key,ans);
    return ans;
}

在这里插入图片描述
没办法,看题解喽

  • 看题解后我傻了,这一题竟然可以直接贪心
public int maxProfit(int[] prices) {
    int ans = 0;
    for (int i = 1; i < prices.length; i++) {
        int  p = prices[i]-prices[i-1];
        if(p>0) ans+=p;
    }
    return ans;
}
  • dp也很简单,但是自己的猪脑想不到,不会分析
// 也很简单 持有股票和没有股票两种状态而已 0不持有  1持有
public int maxProfit(int[] prices) {
    int n = prices.length;
    int[][] dp = new int[n][2];
    dp[0][1] = -prices[0];
    for (int i = 1; i < prices.length; i++) {
        dp[i][0] = Math.max(dp[i-1][0],dp[i-1][1]+prices[i]);//[头一天不持有股票且今天不买][头一天持有股票今天卖了]
        dp[i][1] = Math.max(dp[i-1][1],dp[i-1][0]-prices[i]);//[头一天就持有股票且今天不卖][头一天不持有股票且今天买了]
    }
    return dp[n-1][0];
}

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

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

相关文章

169. 多数元素

题目 题解一&#xff1a;map集合计数 /*** map集合计数* param nums* return*/public static int majorityElement(int[] nums) {Map<Integer, Integer> map new HashMap<>();//第一个for循环将数组中的元素作为key 出现次数作为value存入map 并且key重复 就v…

代码随想录算法学习心得 48 | 583.两个字符串的删除操作、72.编辑距离...

一、两个字符串的删除操作 链接&#xff1a;力扣 描述&#xff1a;给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 思路如下&#xff1a;整体思路是不变的。 这次是两个字符串可以相互…

OceanMind海睿思助力南京钢铁基于数字化审计为核心的全域风控管理

近日&#xff0c;中新赛克海睿思 与 南京钢铁股份有限公司&#xff08;以下简称“南钢”&#xff09;达成深度战略合作&#xff0c;携手推进企业内审数字化迈向智慧化发展。 双方将依托 OceanMind海睿思 提供业内领先的大数据平台和丰富的审计行业经验&#xff0c;积极利用先进…

《向量数据库指南》:向量数据库Pinecone备份索引教程

目录 ⚠️警告 使用集合创建备份 检查集合的状态 列出您的集合 删除一个集合 本文档描述如何使用集合备份索引。 要了解如何从集合创建索引,请参阅管理索引。 ⚠️警告 本文档使用集合。这是一个公开预览功能。在使用此功能生产负载之前,请进行充分测试。 使用集合…

一种有趣的 OTA 升级思路(基于 LoRa 通信的 OTA 固件升级的调试记录)

文章目录 1 概述2 调试之路2.1 想法2.2 函数和变量定义在绝对地址的实现2.2.1 IAR的扩展关键字2.2.2 函数的绝对定位2.2.3 变量的绝对定位2.2.4 常量的绝对定位2.2.4 .c文件的绝对定位 2.3 Bootload 共有函数的实现2.4 APP 共有函数的使用 3 注意事项4 调试坎坷之路5 补充 1 概…

学习React(四)

学习React&#xff08;四&#xff09; componentWillMount&#xff08;被放弃使用&#xff09;rendercomponentDidMountshouldComponentUpdatecomponentWillUpdate&#xff08;被放弃使用&#xff09;componentDidUpdatecomponentWillReceiveProps&#xff08;被放弃使用&#…

idea连接远程服务器上传war包文件

idea连接远程服务器&上传war包 文章目录 idea连接远程服务器&上传war包1. 连接服务器2.上传war包 1. 连接服务器 选择Tools -> Start SSH Session 添加配置 连接成功 2.上传war包 Tools -> Deployment -> Browse Remote Host 点击右侧标签&#xff0c;点击&…

【二开】JeecgBoot-vue3二次开发 前端 扩展online表单js增强等-在表单里拿到列表上下文onlineTableContext

【二开】JeecgBoot-vue3二次开发 前端 扩展online表单js增强等-在表单里拿到列表上下文 onlineTableContext 对应的属性方法 acceptHrefParams"<p> 跳转时获取的参数信息"currentPage"<p> 当前页数"currentTableName"<p> 当前表…

读取有重复section的ini格式文件最新的几个不同section

文件内容示例如下 可以看到文件并不是标准的 ini 配置文件的格式&#xff0c;存在很多重复的 section&#xff08;中括号里的就是section&#xff09; &#xff0c; 我的任务是读取文件末尾最新的四个不同 section&#xff0c;并发送出去。 按照读取 ini 文件那样读取显然是不…

常用API学习08(Java)

格式化 格式化指的是将数据按照指定的规则转化为指定的形式 。 那么为什么需要格式化&#xff1f;格式化有什么用&#xff1f; 以数字类为例&#xff0c;假设有一个比分牌&#xff0c;在无人得分的时候我们希望以&#xff1a;“00&#xff1a;00”的形式存在&#xff0c;那么…

睡眠健康数据分析

项目背景 背景描述 本数据集涵盖了与睡眠和日常习惯有关的诸多变量。如性别、年龄、职业、睡眠时间、睡眠质量、身体活动水平、压力水平、BMI类别、血压、心率、每日步数、以及是否有睡眠障碍等细节。 数据集的主要特征&#xff1a; 综合睡眠指标&#xff1a; 探索睡眠持续时…

Gitlab服务器备份恢复及系统升级

居安思危&#xff0c;思则有备&#xff0c;有备无患。 基于此&#xff0c;申请了一个测试服务器&#xff0c;准备先安装同版本服务器&#xff0c;按照最新的数据进行恢复&#xff0c;然后再将现在的服务器升级到Gitlab的最新版本&#xff0c;记录一下完整的过程&#xff0c;以…

文件上传漏洞总结2

文件上传的大体都已经学习过了 这个假期在给他强化一下 什么是webshell webshell是web入侵的脚本攻击工具。webshell就是一个asp或php木马后门&#xff0c;黑客在入侵了一个网站后&#xff0c;常常在将这些asp或php木马后门文件放置在网站服务器的web目录中&#xff0c;与正常…

C++初阶之一篇文章让你掌握string类(了解和使用)

string类及其模拟实现 1.我们为什么要学习string类2. 标准库中的string类2.1 string类的实例化标准2.2 了解string 3.string类的常用接口说明3.1 string类对象的常见构造3.2 string类对象的容量操作3.3 string类对象的元素访问3.4 string类对象的Iterators&#xff08;迭代器&a…

Websocket协议-http协议-tcp协议区别和相同点

通讯形式 单工通讯-数据只能单向传送一方来发送数据&#xff0c;另一方来接收数据 半双工通讯-数据能双向传送但不能同时双向传送 全双工通讯-数据能够同时双向传送和接受 注&#xff1a;http的通讯方式是分版本 http1.0&#xff1a;单工。因为是短连接&#xff0c;客户端…

C++笔记之对指针类型的变量进行+1操作

C笔记之对指针类型的变量进行1操作 在C中&#xff0c;对指针类型的变量进行"1"操作会根据指针的数据类型而有所不同。这涉及到指针的算术运算&#xff0c;C中的指针算术运算是根据指针所指向的数据类型的大小来进行的。 code review! 文章目录 C笔记之对指针类型的…

扫地机语音提示芯片,智能家居语音交互首选方案,WT588F02B-8S

智能家居已经成为现代家庭不可或缺的一部分&#xff0c;而语音交互技术正是智能家居的核心。在智能家居设备中&#xff0c;扫地机无疑是最受欢迎的产品之一。然而&#xff0c;要实现一个更智能的扫地机&#xff0c;需要一颗语音提示芯片&#xff0c;以提供高质量的语音交互体验…

【iOS】—— 持久化

文章目录 数据持久化的目的iOS中数据持久化方案数据持久化方式分类内存缓存磁盘缓存 沙盒机制获取应用程序的沙盒路径沙盒目录的获取方式 持久化数据存储方式XML属性列表Preferences偏好设置&#xff08;UserDefaults&#xff09;数据库存储什么是序列化和反序列化&#xff0c;…

构建外卖系统小程序,订单管理功能实现步骤详解

外卖系统小程序是近年来越来越受欢迎的一种订餐方式&#xff0c;方便快捷&#xff0c;并且可以减少人与人之间的接触&#xff0c;更加卫生安全。为了搭建一个完善的外卖系统小程序&#xff0c;订单管理功能是必不可少的一部分。在本文中&#xff0c;我们将详细介绍如何实现订单…

java 支持jsonschema

入参校验产品化 schema_xsd可视化编辑器_个人渣记录仅为自己搜索用的博客-CSDN博客 jsonchema的生成 支持v4的jackson-jsonSchema GitHub - mbknor/mbknor-jackson-jsonSchema: Generate JSON Schema with Polymorphism using Jackson annotations jackson-module-jsonSchema …