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

面试刷题4:java(核心+acm模式)

20. 有效的括号 - 力扣(LeetCode)

核心代码模式

class Solution {public boolean isValid(String s) {int len=s.length();Deque<Character> q=new ArrayDeque<>();for(char c:s.toCharArray()){//前置符号直接放if(c=='[')q.push(']');else if(c=='{')q.push('}');else if(c=='(')q.push(')');//为后置符号则直接取出来比较,不对直接返回falseelse if(q.isEmpty()||q.pop()!=c)return false;}//还有则falsereturn q.isEmpty();}
}

手写输入输出

import java.util.*;public class Javaacm
{
//输入格式
//()[]{}public static void main(String []args){Scanner scanner=new Scanner(System.in);String s=scanner.next();Deque<Character> st=new ArrayDeque<>();for(char c:s.toCharArray()){if(c=='[')st.push(']');else if(c=='{')st.push('}');else if(c=='(')st.push(')');else if(st.isEmpty()||st.pop()!=c){System.out.print(false);}}System.out.print(st.isEmpty());return ;}}

88. 合并两个有序数组 - 力扣(LeetCode)

核心代码模式

class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {m--;n--;//倒着比较插入for(int i=nums1.length-1;n>=0&&m>=0;i--){if(nums1[m]<=nums2[n])nums1[i]=nums2[n--];else nums1[i]=nums1[m--];}//如果1先比完则把2插进去while(n>=0)nums1[n]=nums2[n--];return ;}
}

手写输入输出

import java.util.*;public class Javaacm
{
//输入格式
// [1,2,3,0,0,0] 
// 3
// [2,5,6]
// 3public static void main(String []args){Scanner scanner=new Scanner(System.in);String s=scanner.next();String[] str=s.substring(1,s.length()-1).split(",");int nums1[]=new int[str.length];int n1=scanner.nextInt();for(int i=0;i<n1;i++)nums1[i]=Integer.valueOf(str[i]);s=scanner.next();str=s.substring(1,s.length()-1).split(",");int nums2[]=new int[str.length];int n2=scanner.nextInt();for(int i=0;i<n2;i++)nums2[i]=Integer.valueOf(str[i]);n1--;n2--; for(int i=nums1.length-1;n1>=0&&n2>=0;i--){if(nums1[n1]<=nums2[n2])nums1[i]=nums2[n2--];else nums1[i]=nums1[n1--];}while(n2>=0)nums1[n2]=nums2[n2--];for(int i:nums1)System.out.print(i+" ");return ;}}

121. 买卖股票的最佳时机 - 力扣(LeetCode)

核心代码模式

class Solution {public int maxProfit(int[] prices) {int ans=0;int min=prices[0];for(int i:prices){ans=Math.max(ans,i-min);min=Math.min(min,i);}return ans;}
}

手写输入输出

import java.util.*;public class Javaacm
{
//输入格式
// [7,1,5,3,6,4]public static void main(String []args){Scanner scanner=new Scanner(System.in);String s=scanner.next();String[] str=s.substring(1,s.length()-1).split(",");int nums[]=new int[str.length];for(int i=0;i<nums.length;i++)nums[i]=Integer.valueOf(str[i]);int ans=0;int min=nums[0];for(int i:nums){ans=Math.max(ans,i-min);min=Math.min(min,i);}System.out.println(ans);return ;}}

103. 二叉树的锯齿形层序遍历 - 力扣(LeetCode)

核心代码模式

/*** 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 List<List<Integer>> zigzagLevelOrder(TreeNode root) {List<List<Integer>> ans=new ArrayList<>();Queue<TreeNode> q=new ArrayDeque<>();if(root==null)return ans;q.offer(root);while(!q.isEmpty()){int n=q.size();List<Integer>layer =new ArrayList<>();for(int i=0;i<n;i++){TreeNode cur=q.poll();layer.add(cur.val);if(cur.left!=null)q.offer(cur.left);if(cur.right!=null)q.offer(cur.right);}ans.add(layer);}for(int i=1;i<ans.size();i+=2)Collections.reverse(ans.get(i));return ans;}
}

手写输入输出

import java.util.*;
class TreeNode
{TreeNode left,right;int val;TreeNode(int val){this.val=val;}TreeNode(String str){val=Integer.valueOf(str);}TreeNode(int val,TreeNode left,TreeNode right){this.val=val;this.left=left;this.right=right;}
}
public class Javaacm
{
//输入格式
// [3,9,20,null,null,15,7]public static void main(String []args){Scanner scanner=new Scanner(System.in);String s=scanner.next();if(s.equals("[]")){System.out.println("[]");return ;}String[] str=s.substring(1,s.length()-1).split(",");TreeNode root=buildtree(str,0);List<List<Integer>> ans=new ArrayList<>();Queue<TreeNode> q=new ArrayDeque<>();q.offer(root);while(!q.isEmpty()){int n=q.size();List<Integer> layer=new ArrayList<>();for(int i=0;i<n;i++){TreeNode cur=q.poll();layer.add(cur.val);if(cur.left!=null)q.offer(cur.left);if(cur.right!=null)q.offer(cur.right);}ans.add(layer);}for(int i=1;i<ans.size();i+=2)Collections.reverse(ans.get(i));System.out.println(ans);return ;}static TreeNode buildtree(String []str,int idx){if(idx>=str.length||str[idx].equals("null")){return null; }TreeNode root=new TreeNode(str[idx]);root.left=buildtree(str,2*idx+1);root.right=buildtree(str,2*idx+2);return root;}}

236. 二叉树的最近公共祖先 - 力扣(LeetCode)

核心代码模式

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {//只返回p,q,最近公共祖先三个节点,其余都为nullif(root==null||root==p||root==q)return root ;TreeNode l=lowestCommonAncestor(root.left,p,q);TreeNode r=lowestCommonAncestor(root.right,p,q);if(l!=null&&r!=null)return root;return l!=null?l:r;}
}

手写输入输出

import java.util.*;
class TreeNode
{TreeNode left,right;int val;TreeNode(int val){this.val=val;}TreeNode(String str){val=Integer.valueOf(str);}TreeNode(int val,TreeNode left,TreeNode right){this.val=val;this.left=left;this.right=right;}
}
public class Javaacm
{
//输入格式
//[3,5,1,6,2,0,8,null,null,7,4]
//5  1static int p,q;public static void main(String []args){Scanner scanner=new Scanner(System.in);String s=scanner.next();if(s.equals("[]")){System.out.println("[]");return ;}String[] str=s.substring(1,s.length()-1).split(",");TreeNode root=buildtree(str,0);p=scanner.nextInt();q=scanner.nextInt();System.out.println(findpq(root).val);return ;}static TreeNode  findpq(TreeNode root){if(root==null||root.val==p||root.val==q)return root;TreeNode l=findpq(root.left);TreeNode r=findpq(root.right);if(l!=null&&r!=null)return root;return l!=null?l:r;}static TreeNode buildtree(String []str,int idx){if(idx>=str.length||str[idx].equals("null")){return null; }TreeNode root=new TreeNode(str[idx]);root.left=buildtree(str,2*idx+1);root.right=buildtree(str,2*idx+2);return root;}}

http://www.xdnf.cn/news/8918.html

相关文章:

  • Mac安装配置InfluxDB,InfluxDB快速入门,Java集成InfluxDB
  • 华清远见亮相第63届高博会,展示AI/嵌入式/物联网/具身智能全栈教学解决方案
  • Java中的设计模式:单例模式的深入探讨
  • 【生产实践】华为存储XSG1在RHEL 7.x/8.x上的多路径配置操作手册(生产环境)
  • Taro on Harmony C-API 版本正式开源
  • springcloud---gateway
  • PDF处理控件Aspose.PDF教程:以编程方式合并PDF文档
  • 【LeetCode 热题 100】买卖股票的最佳时机 / 跳跃游戏 / 划分字母区间
  • 力扣HOT100之回溯:22. 括号生成
  • 华为仓颉语言初识:结构体struct和类class的异同
  • SWOT 模型:基础框架的应用价值与改进路径
  • AI时代新词-AI增强现实(AI - Enhanced Reality)
  • 【Linux】进程信号(二):捕抓信号
  • Web攻防-SQL注入数据格式参数类型JSONXML编码加密符号闭合
  • Unity InputField 滑动滚轮 实现对文本的滚动
  • 手机发热怎么办?
  • Dify长期记忆插件: Mem0 与 Memobase
  • model.classifier:分类头
  • 【C/C++】记录一次麻烦的Kafka+Json体验
  • 互联网大厂Java求职面试:AI与大模型应用集成中的架构难题与解决方案-2
  • Go语言方法与接收者 -《Go语言实战指南》
  • 【数据结构】哈希表的实现
  • 【无标题】前端如何实现分页?
  • 数据结构第5章 树与二叉树(竟成)
  • 数据结构-查找(1)
  • 数据结构第4章 栈、队列和数组 (竟成)
  • Oracle 的V$LOCK 视图详解
  • 二十七、面向对象底层逻辑-SpringMVC九大组件之HandlerAdapter接口设计
  • 鸿蒙仓颉开发语言实战教程:自定义tabbar
  • 2025.5.26 关于后续更新内容的通知