💟💟前言
🥇作者简介:友友们大家好,我是你们的小王同学😗😗
🥈个人主页:小王同学🚗
🥉 系列专栏:牛客刷题专栏📖
📑 推荐一款非常火的面试、刷题神器👉 牛客网
觉得小王写的不错的话 麻烦动动小手 点赞👍 收藏⭐ 评论📄
今天给大家带来的刷题系列是:
剑指offer 链接:👉 剑指offer



里面有非常多的题库 跟面经知识 真的非常良心了!!

因为队列是一种先进先出的数据结构,我们依照它的性质,如果从左到右访问完一行节点,并在访问的时候依次把它们的子节点加入队列,那么它们的子节点也是从左到右的次序,且排在本行节点的后面,因此队列中出现的顺序正好也是从左到右,正好符合层次遍历的特点。
这道题是一道经典的二叉树的层序遍历问题 考虑用bfs(广度优先搜索)
第一步 创建一个存放二叉树根节点的队列 将根节点入队 如果根节点为空 直接返回序列
第二步 由于每层都是从左到右打印的 如果左儿子存在 就入队 如果右儿子空就入队
最后返回序列
- import java.util.*;
- import java.util.ArrayList;
- /**
- public class TreeNode {
- int val = 0;
- TreeNode left = null;
- TreeNode right = null;
- public TreeNode(int val) {
- this.val = val;
- }
- }
- */
- public class Solution {
- ArrayList
list =new ArrayList<>(); - public ArrayList
PrintFromTopToBottom(TreeNode root) { -
-
-
- if(root==null )return list;
- Queue
queue =new LinkedList<>(); -
- queue.add(root); //根节点
- while(queue.size()>0){
- int size=queue.size();
- for(int i=0;i
- TreeNode node=queue.poll();
- if(node.left!=null){
- queue.add(node.left);
- }
- if(node.right!=null){
- queue.add(node.right);
- }
- list.add(node.val);
-
- }
- }
- return list;
-
-
-
-
-
-
-
-
- }
- }
- import java.util.*;
- import java.util.ArrayList;
- /**
- public class TreeNode {
- int val = 0;
- TreeNode left = null;
- TreeNode right = null;
- public TreeNode(int val) {
- this.val = val;
- }
- }
- */
- public class Solution {
- ArrayList
list =new ArrayList<>(); - public ArrayList
PrintFromTopToBottom(TreeNode root) { -
-
-
- if(root==null )return list;
- Queue
queue =new LinkedList<>(); -
- queue.add(root); //根节点
- while(!queue.isEmpty()){
- TreeNode node =queue.poll();
- list.add(node.val);
- if(node.left!=null){
- queue.add(node.left);
- }
- if(node.right!=null){
- queue.add(node.right);
- }
-
- }
- return list;
-
-
-
-
-
-
-
-
-
- }
- }

JZ42 连续子数组的最大和
题目描述

解题思路
这道题是一道dp(动态规划)裸题
定义一个dp[]数组用来存储连续子数组的最大和 dp[i]表示 元素以array[i]结尾的连续子数组的最大和
用max变量记录计算过程中产生的最大的连续和dp[i]

代码详解
暴力做法:时间复杂度O(n^2)
- public class Solution {
- public int FindGreatestSumOfSubArray(int[] array) {
- int n=array.length;
- int max=0;
- int sum=0;
- for(int i=0;i
- sum=0;
- //每次循环一次都需要把sum赋值为零
- for(int j=i;j
- //求从i到j的数值和
- sum+=array[j];
- //每次出现最大值保存下来
- max=Math.max(max,sum);
- }
- }
- return max;
-
-
- }
- }
动态规划 dp: 时间复杂度O(n)
- public class Solution {
- public int FindGreatestSumOfSubArray(int[] array) {
- int n=array.length;
- int max=array[0];
- int dp[]=new int[n+1];
- dp[0]=array[0];
- for(int i=1;i
- dp[i]=Math.max(dp[i-1]+array[i],array[i]);
- max=Math.max(max,dp[i]);
-
- }
- return max;
-
-
-
- }
- }

牛客是一款不论是面试 还是刷题 都是非常有用的 还等什么注册其来吧!👉👉 牛客网
-
相关阅读:
疫情防控系统怎么选?还是国产化的靠谱
揭秘OLED透明拼接屏的参数规格:分辨率、亮度与透明度全解析
Apache Druid 数据摄取---本地数据和kafka流式数据
torchvision.datasets.ImageFolder前的数据整理及使用方法
Go 复合数据类型之结构体与自定义类型
密码学技术总结
RabbitMQ消息中间件
19、商品微服务-srv层实现
(附源码)ssm医疗管理系统 毕业设计 260952
Redis----布隆过滤器
-
原文地址:https://blog.csdn.net/weixin_59796310/article/details/126468807
-
最新文章
-
沪漂五周年了:我越来越迷茫了
Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
MySQL-Seconds_behind_master的精度误差
[MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
Agent OS :五种驯服不确定性的范式
PortSwigger SQL注入LAB11
数据库即时编译JIT
[Begin]AI Learn Data Day 0
深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU