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

chatgpt/2023/10/4 8:47:28

文章目录

  • 不要摆,没事干就刷题,只有好处,没有坏处,实在不行,看看竞赛题
    • 面试经典 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);// 不买 sumint 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.exyb.cn/news/show-5314348.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

【学习笔记】[集训队互测 2018] 完美的队列

有点难&#x1f605; 考虑暴力做法的本质&#x1f914; 发现瓶颈在于找到所有的作用区间&#xff0c;观察性质发现作用的区间和之前队列中有多少元素是无关的 用分块优化之&#xff08;类似于 大步小步&#xff09;&#xff0c;可以做到 O ( n n log ⁡ n ) O(n\sqrt{n}\log…

27 用linprog、fmincon求 解线性规划问题(matlab程序)

1.简述 ① linprog函数&#xff1a; 求解线性规划问题&#xff0c;求目标函数的最小值&#xff0c; [x,y] linprog(c,A,b,Aeq,beq,lb,ub) 求最大值时&#xff0c;c加上负号&#xff1a;-c ② intlinprog函数&#xff1a; 求解混合整数线性规划问题&#xff0c; [x,y] intl…

剑指 Offer 38. 字符串的排列 / LeetCode 47. 全排列 II(回溯法)

题目&#xff1a; 链接&#xff1a;剑指 Offer 38. 字符串的排列 难度&#xff1a;中等 输入一个字符串&#xff0c;打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组&#xff0c;但里面不能有重复元素。 示例: 输入&#xff1a;s “abc” 输出&…

主成分分析PCA算法

Principal Components Analysis 这个协方差矩阵是一个nXn的&#xff0c;且是对称矩阵&#xff0c;就会有n个特征值λ和特征向量v&#xff0c;每个特征向量也是n维的。第一行特征向量v对应特征值λ1 。 D(yk)&#xff1a;表示主成分yk的方差。方差越大&#xff0c;说明携带的信…

python collections 中的 ChainMap 类

ChainMap chainMap 属于Python collections 模块下的一个子类&#xff0c;作用是将多个字典&#xff0c;组织成一个字典。当查询时&#xff0c;会按照构造时传入的字典的顺序进行查询。它比使用这些字典创建一个新字典要快。 简单示例 # 导入ChainMap模块 from collections …

ODIN_1靶机详解

ODIN_1靶机复盘 下载地址&#xff1a;https: //download.vulnhub.com/odin/odin.ova 靶场很简单&#xff0c;一会儿就打完了。 靶场说明里提醒说加一个dns解析。 我们在/etc/hosts加一条解析 就能正常打开网站了&#xff0c;要么网站打开css是乱的。 这里看到结尾就猜测肯定…

Unity UGUI的Shadow(阴影)组件的介绍及使用

Unity UGUI的Shadow(阴影)组件的介绍及使用 1. 什么是Shadow(阴影)组件&#xff1f; Shadow(阴影)组件是Unity UGUI中的一个特效组件&#xff0c;用于在UI元素上添加阴影效果。通过调整阴影的颜色、偏移、模糊等属性&#xff0c;可以使UI元素看起来更加立体和有层次感。 2. …

【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Pythonmatlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…
推荐文章