当前位置: 首页 > news >正文

leetcode刷题记录03——top100题里的6道简单+1道中等题

leetcode刷题记录03——top100题里的6道简单+1道中等题

在这里插入图片描述

上一篇博客:
leetcode刷题记录01——top100题里的7道简单题
leetcode刷题记录02——top100题里的7道简单题

  1. 有效的括号
    看懂需要用栈了,但是不知道怎么去写,看了题解mark下正确答案。

    class Solution {public boolean isValid(String s) {int n = s.length();if(n%2==1){return false;}Map<Character,Character> map = new HashMap<Character,Character>(){{put('}','{');put(')','(');put(']','[');}};Deque<Character> stack = new LinkedList<Character>();for(int i = 0; i< n; i++){Character ch = s.charAt(i);if(map.containsKey(ch)){if(stack.isEmpty() || stack.peek() != map.get(ch)){return false;}stack.pop();}else{stack.push(ch);}}return stack.isEmpty();}
    }
    
  2. 买卖股票的最佳时机
    暴力遍历会超时
    看了题解,记录之前的最小价格,记录截至当前的最大利润。

    class Solution {public int maxProfit(int[] prices) {int minPrice = Integer.MAX_VALUE;int maxProfit = 0;for(int i = 0; i< prices.length; i++){if(prices[i] <= minPrice){minPrice = prices[i];}if(maxProfit <= prices[i]-minPrice){maxProfit = prices[i]-minPrice;}}return maxProfit;}
    }
    
  3. 爬楼梯
    一看就会,一写就废🤦‍
    这道题看着很简单,每次爬1或者2个楼梯,10个楼梯有多少种爬法。很好理解,少的楼梯可以手撕。写起来就不会了… 想到了递归,但不会写方法;
    看了题解正确答案,这个还比较好理解;

    class Solution {public int climbStairs(int n) {int p = 1;int q = 2;if(n==1){return p;}else if(n==2){return q;}else{int r = 0;// 从第三楼开始,只有两种上楼方式,从前一层再爬一楼和从前二层再爬两楼。// 可以推出 f(n) = f(n -1) + f(n -2)// 直接递归会超时,所以用的for循环求结果for(int i =3;i<=n;i++){r = p+q;p = q;q = r;}return r;}}
    }
    
  4. 杨辉三角
    可以追溯到我幸福童年小学时光的一道题,那会为了不再教室可以在外边望望风,拿着一本奥赛题书问老师这个问题…
    比较好理解,递归。直接来一个二维数组或者List<List>来存储。
    核心"j == 0 || j == i" 为1,其余的需要根据上一个行的值来计算求解: [i-1][j-1]+[i-1][j] 来获取其值。

    class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> ret = new ArrayList<List<Integer>>();for(int i = 0;i<numRows;i++){List<Integer> row = new ArrayList<Integer>();for(int j = 0;j<=i;j++){if(j==0 || j==i){row.add(1);}else{row.add(ret.get(i-1).get(j-1)+ret.get(i-1).get(j));}}ret.add(row);}return ret;}
    }
    
  5. 只出现一次的数字
    异或来自官方的答案。其实也可以排序完然后判断是返回那个。
    任意数字与0做异或都得到该数字。

    class Solution {public int singleNumber(int[] nums) {int single = 0;for(int num: nums){single ^= num;}return single;}
    }
    
  6. 多数元素
    一遍过,灵感乍现,给数组排个序,再计算count数,就可以找到了。
    还可以更简化,因为题目中已经给定了多数元素个数超过了n/2,所以排序完直接返回 n/2下标处的元素就可以了。

  7. 中等难度:字母异位词组
    第一反应是先把俩个只有一个元素的情况兼容处理,然后对于有多个的,可以对每个词里包含的字母按照升序排列后如果一致,那就是异位词组。
    str.split(“”)得到字符串数组 String[]; 或者str.charAt(i)得到每一位上的数值,然后String[] 转string, String.join(“”,strArray) 或者 StringUtils.join(strArray); 或者 官方答案:str.toCharArray() 得到 char[],然后Arrays.sort(char[]) , new String(char[])转回str。

class Solution {public List<List<String>> groupAnagrams(String[] strs) {List<List<String>> list = new ArrayList<>();if(strs.length ==1){List<String> strList = new ArrayList<>();strList.add(strs[0]);list.add(strList);return list;}Map<String,List<String>> map = new HashMap<String,List<String>>();for(String str: strs){String[] chs = str.split("");Arrays.sort(chs); String strLower = String.join("",chs);if(map.containsKey(strLower)){map.get(strLower).add(str);}else{List<String> strList = new ArrayList<>();strList.add(str);map.put(strLower,strList);}}for(String key: map.keySet()){list.add(map.get(key));}return list;}
}
http://www.xdnf.cn/news/1355437.html

相关文章:

  • H264编解码过程简述
  • 算法 ---哈希表
  • C 语言标准输入输出头文件stdio.h及其常见用法
  • 【KO】前端面试六
  • 【40页PPT】企业如何做好大数据项目的选型(附下载方式)
  • 利用背景图片定位套打档案封面
  • 当AI成了“历史笔迹翻译官”:Manus AI如何破解多语言手写文献的“密码锁”
  • 1200 SCL学习笔记
  • 【Java SE】抽象类与Object类
  • 51单片机-实现外部中断模块教程
  • SpringBoot3整合dubbo3客户端【最佳实践】
  • 编程刷题-染色题DFS
  • 【C标准库】详解<stdio.h>标准输入输出库
  • CUDA和torch的安装
  • 什么是多元线性回归,系数、自变量、因变量是什么,多元线性回归中的线性是什么
  • 多光谱相机检测石油石化行业的跑冒滴漏的可行性分析
  • 【yocto】Yocto Project 配置层(.conf)文件语法详解
  • calchash.exe和chckhash.exe计算pe文件hash值的两个实用小工具
  • 智慧零售漏扫率↓79%!陌讯多模态融合算法在智能收银与货架管理的实战解析
  • 双目密集匹配(stereo dense matching)
  • stack,queue以及deque的介绍
  • 深度学习中主流激活函数的数学原理与PyTorch实现综述
  • 【字母异位分组】
  • 随机森林1
  • 【机器学习深度学习】多模态学习
  • 【GaussDB】使用MySQL客户端连接到GaussDB的M-Compatibility数据库
  • 【85页PPT】数字化转型LIMS大型企业智能制造之LIMS实验室管理系统产品解决方案(附下载方式)
  • MVC模式在个人博客系统中的应用
  • 简单介绍计算机的工作过程
  • 激光雷达工作原理