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

JAVA115回顾:Leecode 两数之和、无重复字符的最长字串、翻转二叉树、 最长公共前缀

两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。
在这里插入图片描述

先想思路,看题解,对照题解思路一不一样,很一样直接开始写,没思路直接看题解

思路:
定义数组,存储
遍历数组
使用Hashmap,遍历数组,如果在hashmap中找到target-nums[i],return一个数组 new int[] (i,map.get(target-nums[i]))
如果没有 就存入hashmap
如果都没找到 就报错 throw
在这里插入图片描述
在这里插入图片描述

        throw new RuntimeException("no num");//垃圾回收机制需要看下 throw是垃圾回收吗?

在这里插入图片描述
在这里插入图片描述

class Solution {public int[] twoSum(int[] nums, int target) {{HashMap<Integer,Integer>map=new HashMap<>();for(int i=0;i<nums.length;i++){if(map.containsKey(target-nums[i])){return new int[]{map.get(target-nums[i]),i};}map.put(nums[i],i);}throw new RuntimeException("no num");
}   }
}

无重复字符的最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度。
在这里插入图片描述
思路:hashmap
定义左指针找:如果hashmap中找到元素,左指针移动到该元素(前value与当前value的最大值),i 定义为-1初值
补充 首先遍历数组
如果在hashmap中找到当前元素,i进行定位,hashmap中存在该元素的value,旧i的较大值 不能直接赋值,如果直接赋值 所得字符串可能包含相同原素abcba为例
如果没找到 当前元素存入hashmap中;如果找到,也存入hashmap中,此时该元素value更新为新的
定义返回值res=0 是最长字符串的长度 res=原res和当前遍历到的次序-i(代表此时不含元素的长度)取较大值
以abcba为例

字符串jihashmapres
0-1
a0-1a 00,j-i=0+1=1 1
b1-1a 0 b 11,j-i=1+1=2 2
c2-1a 0 b 1 c 22,j-i=2–1=3 3
b3-1,1 1a0 b3 c23,j-i=3-1=2 3
a41,0 1a4 b3 c23,j-i=4-1=3 3

如果i=当前value
那么计算出的res中含有重复值
在这里插入图片描述
在这里插入图片描述

class Solution {public int lengthOfLongestSubstring(String s) {HashMap<Character,Integer>map=new HashMap<>();int i=-1;int res=0;int length=s.length();for(int j=0;j<length;j++) {if (map.containsKey(s.charAt(j)))//不能存啊 怎么cun{i = Math.max(i, map.get(s.charAt(j)));}map.put(s.charAt(j), j);//计算长度res=Math.max(res,j-i);}return res;}
}

在这里插入图片描述

翻转二叉树

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
在这里插入图片描述
思路:
递归
每一层执行左右交换
右给tmp
左给右
tmp给左
执行本方法(当前节点的左节点)
执行本方法(当前节点的右节点)
返回root
(如果执行到返回root 执行本方法左节点 执行本方法右节点 都已执行完毕 具有返回值 最后返回结果就是root加上左右节点加上左右节点底下执行返回的)
补充:先判断:如果节点为空 返回空
注意 tmp定义为TreeNode

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode invertTree(TreeNode root) {if(root==null){return null;}TreeNode tmp=root.right;root.right=root.left;root.left=tmp;invertTree(root.left);invertTree(root.right);return root;}
}

在这里插入图片描述

最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 “”。
在这里插入图片描述

先想思路,看题解,对照题解思路一不一样,很一样直接开始写,没思路直接看题解

思路:遍历字符串数组,每个元素进行存入分别,然后分别遍历元素 比较 较复杂

class Solution {public String longestCommonPrefix(String[] strs) {if(strs.length == 0) return "";String ans = strs[0];for(int i =1;i<strs.length;i++) {int j=0;for(;j<ans.length() && j < strs[i].length();j++) {if(ans.charAt(j) != strs[i].charAt(j))break;}ans = ans.substring(0, j);if(ans.equals(""))return ans;}return ans;}
}作者:画手大鹏
链接:https://leetcode.cn/problems/longest-common-prefix/solutions/8348/hua-jie-suan-fa-14-zui-chang-gong-gong-qian-zhui-b/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在这里插入图片描述
在这里插入图片描述

public class Solution6 {public String longestCommonPrefix(String[] strs) {if(strs.length == 0)return "";//字符串为空,没公共前缀。String ans = strs[0];//第一个元素为ansfor(int i =1;i<strs.length;i++) {//遍历ansint j=0;for(;j<ans.length() && j < strs[i].length();j++) {//啥意思 ;前面没有内容,表示循环变量i已经在循环外部定义和初始化//这么定义有啥好处:这种写法通常用于当循环变量需要在循环外部初始化,或者需要保留循环结束后的i值的情况。//j<strs第一个字符串的长度 并且 j小于字符串组当前遍历到的字符串的长度if(ans.charAt(j) != strs[i].charAt(j))//如果ans的第j个元素 和 字符串组中第i个元素的 (当前遍历元素)的第j个字符不同//退出循环break;//break是退出当前循环吗?是的 退出for循环 输出相同的当前元素的第j个以及字符串数组中第i个。}ans = ans.substring(0, j);//啥意思?​从字符串 ans中截取从索引 0 开始到索引 j(不包括 j)的子字符串,并将结果重新赋值给 ans。if(ans.equals(""))//为啥会=“” 没有想等的 前缀return ans; //是return 原来的ans 还是return 现在的null}return ans;//执行完了,返回ans//计划弄个表看下}
}
http://www.dtcms.com/a/572851.html

相关文章:

  • 机器学习 大数据情境下blending-示例
  • 企业网站制作模板深圳坪山最新消息
  • Java进阶之多线程
  • idea2025版本设置springboot加载热部署
  • 合肥电子商务开发网站建设手机html5网站开发
  • 高速摄像机、科学相机赋能燃烧与多相流研究
  • 扣子大数据节点说明
  • Opencv图像畸变校正---个人学习笔记(待完善版)
  • Java设计模式精讲---02抽象工厂模式
  • 【ChatGPT系列】ChatGPT Atlas:未来浏览器的智慧体验
  • AWS实现S3配置私钥以及上传
  • C++ opencv拟合直线
  • TDengine IDMP 1.0.5.0 及近期更新总览:模型计算、可视化、异常检测全面升级
  • Melotopia For HarmonyOS 的 HAP 签名安装包在 DevEco Studio 中安装的详细步骤
  • 网页遇到ddos网络攻击,应该如何应对
  • LlamaFactory微调效果与vllm部署效果不一致
  • 国外营销网站求一个旅游网站的代码
  • Opencv(八) :ROI 切割
  • 计算机网络自顶向下方法34——网络层 排队论 缓存大小调节 分组调度 网络中立性
  • 网站怎么做适配南通网站建设培训
  • 本地缓存与分布式缓存:深入解析与多级缓存架构实践
  • 【C语言实战(73)】深入C语言网络编程:UDP与TCP的实战对决
  • 健身房预约系统SSM+Mybatis(五、预约展示)
  • 记录对某985证书站挖掘
  • 解决 Chrome 无法访问网页但无痕模式下可以访问该网页 的问题
  • 探索LoSA:动态低秩稀疏自适应——大模型高效微调的新突破
  • wordpress表格插件网站建设关键词优化价格
  • Gitlab+Jenkins+Docker+Harbor+K8s+Rancher集群搭建CICD平台
  • Linux服务器安装jdk和maven详解
  • 回归、预测、分类三者关系