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

YangQG 面试题汇总

一、交叉链表

问题:

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。

解题思想:

双指针

备注:不是快慢指针,如果两个长度相同可以用快慢指针,因为两个链表长度不同。

package org.example.YangQianGuan;class Node {int data;Node next;Node(int val) {this.data = val;this.next = null;}@Overridepublic String toString() {return " {data: " + this.data + " next: " + this.next + "} ";}
}public class IntersectionNode {public Node getStartInter(Node headA, Node headB) {if (headA == null || headB == null) {return null;}Node pA = headA;Node pB = headB;while (pA!= pB) {pA = pA == null? headB : pA.next;pB = pB == null? headA : pB.next;}return pA;}public static void main(String[] args) {// node listNode node8 = new Node(8);Node node4 = new Node(4);Node node5 = new Node(5);node8.next = node4;node4.next = node5;// A listNode headA = new Node(4);Node nodeA1 = new Node(1);headA.next = nodeA1;nodeA1.next = node8;// B ListNode headB = new Node(5);Node nodeB1 = new Node(6);Node nodeB2 = new Node(1);headB.next = nodeB1;nodeB1.next = nodeB2;nodeB2.next = node8;IntersectionNode intersectionNode = new IntersectionNode();Node startInter = intersectionNode.getStartInter(headA, headB);System.out.println(startInter);}
}

二、对称二叉树

Tree

package org.example.YangQianGuan;class Tree{int data;Tree left;Tree right;public Tree(int data, Tree left, Tree right) {this.data = data;this.left = left;this.right = right;}
}public class IsMirrorTree {public boolean isMirror(Tree root) {if (root == null) {return true;}return this.isMirrorCore(root.left, root.right);}public boolean isMirrorCore(Tree left, Tree right) {if (left == null && right == null) {return true;}if (left == null || right == null) {return false;}if (left.data != right.data) {return false;}return isMirrorCore(left.left, right.right) && isMirrorCore(left.right, right.left);}public static void main(String[] args) {Tree right4 = new Tree(3, null, null);Tree right3 = new Tree(4, null, null);Tree right2 = new Tree(2, right3, right4);Tree left4 = new Tree(4, null, null);Tree left3 = new Tree(3, null, null);Tree left2 = new Tree(2, left3, left4);Tree node1 = new Tree(1, left2, right2);IsMirrorTree isMirrorTree = new IsMirrorTree();boolean mirror = isMirrorTree.isMirror(node1);System.out.println(mirror);}}

三、轮转数组

package org.example.YangQianGuan;import java.util.Arrays;
import java.util.List;public class RightRunArr {public static void main(String[] args) {int[] nums = {1, 2, 3, 4, 5, 6, 7};int n = 3;RightRunArr rightRunArr = new RightRunArr();int[] core = rightRunArr.core(nums, n);System.out.println(Arrays.toString(core));}private int[] core(int[] nums, int n) {int[] res = new int[nums.length];int bit = n % nums.length;System.out.println(bit);int[] left = Arrays.copyOfRange(nums, 0, nums.length - bit);int[] right = Arrays.copyOfRange(nums, nums.length - bit, nums.length);int i = 0;for (int i1 : right) {res[i] = i1;i++;}for (int i1 : left) {res[i] = i1;i++;}return res;}
}

四、接雨水

题目描述

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

示例 1:

输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 
示例 2:输入:height = [4,2,0,3,2,5]   输出:9

提示:

n == height.length
1 <= n <= 2 * 
0 <= height[i] <= 

package org.example.YangQianGuan;/*** 暴力求解法* 总水量 = 除了左右两个边界,【1,lenth-1】所有点位能接水的量的总和* 题目转化为如何求解每个点位的接水量 = Math.min(次点左边最大高度,此点右边最大高度)-heiht(i)*/
public class TrapSolution {public int trap(int[] height) {if (height.length<=1) {return 0;}int totleWater = 0;int leftMax = 0, rightMax = 0;for (int i = 1; i < height.length-1; i++) {// left maxfor (int j = 0; j < i; j++) {leftMax = Math.max(leftMax, height[j]);}// right maxfor (int j = i+1; j < height.length; j++) {rightMax = Math.max(rightMax, height[j]);}totleWater += Math.min(leftMax,rightMax)-height[i];}return totleWater;}public static void main(String[] args) {TrapSolution solution = new TrapSolution();// 测试用例 1int[] height1 = {0,1,0,2,1,0,1,3,2,1,2,1};System.out.println(solution.trap(height1)); // 输出: 6// 测试用例 2int[] height2 = {4,2,0,3,2,5};System.out.println(solution.trap(height2)); // 输出: 9}
}

五、字母异位词分组

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

示例 1:输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

示例 2:输入: strs = [""] 输出: [[""]]

示例 3:输入: strs = ["a"] 输出: [["a"]]

提示:

1 <= strs.length <= 
0 <= strs[i].length <= 100
strs[i] 仅包含小写字母

package org.example.YangQianGuan;import java.util.*;public class GroupAnagrams {public static void main(String[] args) {String[] s = {"eat", "tea", "tan", "ate", "nat", "bat"};GroupAnagrams groupAnagrams = new GroupAnagrams();String[] res = groupAnagrams.getGroup(s);}private String[] getGroup(String[] s) {int length = s.length;if (length==0) {return new String[0];}Map<String, List<String>> map = new HashMap<>();for (String string : s) {char[] charArray = string.toCharArray();Arrays.sort(charArray);String s1 = new String(charArray);List<String> orDefault = map.getOrDefault(s1, new ArrayList<>());orDefault.add(string);map.put(s1, orDefault);}String res[] = new String[map.size()];int n = 0;for (Map.Entry<String, List<String>> stringListEntry : map.entrySet()) {List<String> value = stringListEntry.getValue();String[] array = value.toArray(String[]::new);res[n] = Arrays.toString(array);n++;}System.out.println(Arrays.toString(res));return res;}
}

相关文章:

YangQG 面试题汇总

一、交叉链表 问题&#xff1a; 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 解题思想&#xff1a; 双指针 备注&#xff1a;不是快慢指针&#xff0c;如果两个长度相…...

急速了解什么是GPU服务器

GPU服务器是一种专门配置了高性能图形处理器&#xff08;GPU&#xff09;的服务器&#xff0c;旨在提供高性能计算、深度学习、科学计算等多种场景的计算服务。与传统的CPU服务器相比&#xff0c;GPU服务器在处理并行密集型计算任务时具有显著优势。本文将详细介绍GPU服务器的定…...

用 Python 绘制可爱的招财猫

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​​​ ​​​​​​​​​ ​​​​ 招财猫&#xff0c;也被称为“幸运猫”&#xff0c;是一种象征财富和好运的吉祥物&#xff0c;经常…...

Linux 获取文本部分内容

Linux获取文本部分内容 前言场景获取前几行内容获取末尾几行内容获取中间内容head 命令 tail 命令 结合sed 命令awk 命令 前言 test.log 文本内容如下&#xff1a; &#xff08;注意&#xff1a;内容 a1004和a1005之间有一空行&#xff09; [rootgaussdb002 tmp]# cat test.…...

01-51单片机LED与独立按键

一、单片机概述 注意&#xff1a;个人学习笔记&#xff0c;里面涉及到的C语言和进程转换相关的知识在C语言部分已经写了&#xff0c;这里是默认都会的状态学习单片机。 1.什么是单片机 单片机&#xff0c;英文Micro Controller Unit&#xff0c;简称MCU。其内部集成了CPU、R…...

【微服务】SpringBoot 整合Redis实现延时任务处理使用详解

目录 一、前言 二、延迟任务的高频使用场景 三、延迟任务常用解决方案 3.1 Quartz 3.2 DelayQueue 3.2.1 Timer + TimerTask 3.2.2 ScheduledExecutorService 3.3 Redis sorted set 3.4 RabbitMQ 四、Redis实现延时队列操作实战 4.1 Redis Sorted Set 概述 4.1.1 Re…...

【Java项目】基于SpringBoot的【校园交友系统】

【Java项目】基于SpringBoot的【校园交友系统】 技术简介&#xff1a;系统软件架构选择B/S模式、SpringBoot框架、java技术和MySQL数据库等&#xff0c;总体功能模块运用自顶向下的分层思想。 系统简介&#xff1a;系统主要包括管理员和用户。 (a) 管理员的功能主要有首页、个人…...

Elasticsearch学习(1) : 简介、索引库操作、文档操作、RestAPI、RestClient操作

目录 1.elasticsearch简介1.1.了解es1.2.倒排索引正向索引和倒排索引 1.3.es的一些概念:文档和字段&#xff1b;索引和映射&#xff1b;Mysql与ES1.4.安装es、kibana部署单点es部署kibanaIK分词器安装IK分词器与测试扩展与停用词词典总结 部署es集群 2.索引库操作2.1.mapping映…...

ls指令详讲

&#x1f3dd;️专栏&#xff1a;https://blog.csdn.net/2301_81831423/category_12872319.html &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 基本语法 常用选项详解 1. 基本选项 …...

【前端】【CSS3】基础入门知识

目录 如何学习CSS 1.1什么是CSS​编辑 1.2发展史 1.三种导入方式 1.1、行内样式 1.2、外部样式 1.3、嵌入方式 2.选择器 2.1、基本选择器 &#xff08;1&#xff09;元素选择器 &#xff08;2&#xff09;类选择器 &#xff08;3&#xff09;id选择器&#xff1a;必…...

计算机网络之---RIP协议

RIP协议的作用 RIP (Routing Information Protocol) 协议是一个基于距离矢量的路由协议&#xff0c;它在网络中用来动态地交换路由信息。RIP 是最早的路由协议之一&#xff0c;通常用于小型和中型网络中。它的工作原理简单&#xff0c;易于实现&#xff0c;但在一些大型网络中效…...

【LeetCode Hot100 贪心算法】 买卖股票的最佳时机、跳跃游戏、划分字母区间

贪心算法 买卖股票的最佳时机买卖股票的最佳时机II跳跃游戏跳跃游戏II划分字母区间 买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的…...

互联网架构变迁:从 TCP/IP “呼叫” 到 NDN “内容分发” 的逐浪之旅

本文将给出关于互联网架构演进的一个不同视角。回顾一下互联网的核心理论基础产生的背景&#xff1a; 左边是典型的集中控制通信网络&#xff0c;很容易被摧毁&#xff0c;而右边的网络则没有单点问题&#xff0c;换句话说它很难被全部摧毁&#xff0c;与此同时&#xff0c;分…...

git相关操作笔记

git相关操作笔记 1. git init git init 是一个 Git 命令&#xff0c;用于初始化一个新的 Git 仓库。执行该命令后&#xff0c;Git 会在当前目录创建一个 .git 子目录&#xff0c;这是 Git 用来存储所有版本控制信息的地方。 使用方法如下&#xff1a; &#xff08;1&#xff…...

jenkins 使用 ssh-agent向windows进行部署

背景&#xff1a; jenkins在linux的docker环境内&#xff0c;应用服务部署在windows。需要使用jenkins实现自动化部署。 实现方式&#xff1a; jenkins上构建pipeline任务&#xff0c;脚本如下&#xff1a; 遇到问题&#xff1a; 1、问题&#xff1a;jenkins 调用部署bat脚…...

MySQL入门学习笔记

第一章 数据库系统概述 数据库的4个基本概念 数据、数据库、数据库管理系统、数据库系统是与数据库技术密切相关的4个基本概念 数据 数据是数据库中存储的基本对象&#xff0c;描述事物的符号记录称为数据&#xff0c;数据的表现形式还不能完全表达其内容&#xff0c;需要…...

机器学习全流程解析:数据导入到服务上线全阶段介绍

目录 1. 数据导入 2. 数据预处理 3. 超参数搜索与优化 4. 模型训练 5. 模型评估 6. 模型压缩与优化 7. 模型注册与版本管理 8. 服务上线与部署 总结 1. 数据导入 数据源&#xff1a;数据库、文件系统、API等。数据格式&#xff1a;CSV、JSON、SQL 数据库表、Parquet …...

C#从“Hello World!“开始

是时候一览C#的庐山真面目了。现在&#xff0c;让我们从"Hello World"开始吧&#xff0c;出发&#xff01; 1. 一个简单的C#程序 先来看一段最简单的示例代码&#xff0c;如代码清单2-1所示。 代码清单2-1 HelloWorldClass.cs using System;namespace Programmi…...

LVS 支持 UDP 协议代理

在现代网络架构中,负载均衡技术是保证高可用性和高性能的关键组成部分。Linux Virtual Server(LVS)作为一个高效、稳定的负载均衡解决方案,广泛应用于处理 TCP 流量的场景。然而,随着实时通信、视频流和在线游戏等应用的不断发展,UDP 协议的支持成为了 LVS 负载均衡的重要…...

【C++经典例题】求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a; 期待您的关注 题目描述&#xff1a; 原题链接&#xff1a; 求123...n_牛客题霸_牛客网 (nowcoder.com) 解题思路&#xff1a; …...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...