牛客网经典Java面试常见题

news2024/11/20 1:42:09

在这里插入图片描述

个人主页:熬夜磕代码丶
作品专栏: 数据结构与算法
我变秃了,也变强了
给大家介绍一款程序员必备刷题平台——牛客网
点击注册一起刷题收获大厂offer吧
在这里插入图片描述

文章目录

  • 一、二叉搜索树与双向链表
  • 二、从尾到头打印链表
  • 三、调整数组奇数位于偶数前面
  • 四、删除链表的节点
  • 五、 只出现一次的数字

一、二叉搜索树与双向链表

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。如下图所示
在这里插入图片描述
注意:
1.要求不能创建任何新的结点,只能调整树中结点指针的指向。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继
2.返回链表中的第一个节点的指针
3.函数返回的TreeNode,有左右指针,其实可以看成一个双向链表的数据结构
4.你不用输出双向链表,程序会根据你的返回值自动打印输出

在这里插入图片描述

public class Solution {
    public TreeNode Convert(TreeNode pRootOfTree) {
       if(pRootOfTree == null) {
           return null;
       }
       createLinkedList(pRootOfTree);
       while(pRootOfTree.left != null) {
           pRootOfTree = pRootOfTree.left;
       }
       return pRootOfTree;
    }
    TreeNode prev = null;
    public  void createLinkedList(TreeNode pRootOfTree) {
        if(pRootOfTree == null) {
            return;
        }
        createLinkedList(pRootOfTree.left);
        pRootOfTree.left = prev;
        if(prev != null) {
            prev.right = pRootOfTree;
        }
        prev = pRootOfTree;
        createLinkedList(pRootOfTree.right);
    }
}

二、从尾到头打印链表

输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。
题目地址:从尾到头打印链表
在这里插入图片描述

在这里插入图片描述

import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        if(listNode == null) {
            return list;
        }
        ListNode cur = listNode.next;
        listNode.next = null;
        while(cur != null) {
            ListNode curNext = cur.next;
            cur.next = listNode;
            listNode = cur;
            cur = curNext;
        }
        while(listNode != null) {
            list.add(listNode.val);
            listNode = listNode.next;
        }
        return list;
    }
}

三、调整数组奇数位于偶数前面

输入一个长度为 n 整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
在这里插入图片描述
在这里插入图片描述

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param array int整型一维数组 
     * @return int整型一维数组
     */
    public int[] reOrderArray (int[] array) {
        int[] arr = new int[array.length];
        int k = 0;
        for(int i = 0;i < array.length;i++) {
            if(array[i] % 2 == 1) {
                arr[k++] = array[i];
            }
        }
        for(int i = 0;i < array.length;i++) {
            if(array[i] % 2 == 0) {
                arr[k++] = array[i];
            }
        }
        return arr;
    }
}

四、删除链表的节点

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。

1.此题对比原题有改动
2.题目保证链表中节点的值互不相同
3.该题只会输出返回的链表和结果做对比,所以若使用 C 或 C++ 语言,你不需要 free 或 delete 被删除的节点
题目地址:从尾到头打印链表
在这里插入图片描述
在这里插入图片描述

public ListNode deleteNode (ListNode head, int val) {
        if(head == null) {
            return head;
        }
        if(head.val == val) {
            return head.next;
        }
        ListNode fast = head.next;
        ListNode slow = head;
        while(fast != null) {
            if(fast.val == val) {
                slow.next = fast.next;
                break;
            }else {
                slow = slow.next;
                fast = fast.next;
            }
        }
        return head;
    }

五、 只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
方法1 : 异或

public int singleNumber(int[] nums) {
        int x = 0;
        for(int i = 0;i < nums.length;i++) {
            x ^= nums[i];
        }
        return x;
    }

方法2: HashSet

class Solution {
    public int singleNumber(int[] nums) {
        HashSet<Integer> hashSet = new HashSet<>();
        for (int i = 0; i < nums.length; i++) {
            if(hashSet.contains(nums[i])) {
                hashSet.remove(nums[i]);
            }else {
                hashSet.add(nums[i]);
            }
        }
        for (int i = 0; i < nums.length; i++) {
            if(hashSet.contains(nums[i])) {
                return nums[i];
            }
        }
        return -1;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/478.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据毕业设计可视化大屏前后端项目分享

1、前言 很久没有分享过可视化大屏的项目了&#xff0c;距离上次分享基于Echarts的数据可视化大屏系统设计分享这篇可视化系统已经过去了整整一年有余。当时分享这篇博客没想到会收获这么多的阅读量&#xff0c;并且在刚发布的时候&#xff0c;还上了CSDN的博客热搜2&#xff…

gcc环境下演示C语言变长数组

前言 &#x1f47b;作者&#xff1a;龟龟不断向前 &#x1f47b;简介&#xff1a;宁愿做一只不停跑的慢乌龟&#xff0c;也不想当一只三分钟热度的兔子。 &#x1f47b;专栏&#xff1a;C初阶知识点 &#x1f47b;工具分享&#xff1a; 刷题&#xff1a; 牛客网 leetcode笔记软…

安全帽佩戴识别算法

安全帽佩戴识别算法采用SuiJi-AI人工智能深度学习技术计算机智能视觉识别算法&#xff0c;且通过规模化的安全帽数据识别训练。安全帽佩戴识别算法借助现场已有的监控摄像头对监控画面中人员着装行为进行实时分析识别。假如检测人员不戴安全帽&#xff0c;SuiJiAi将立即记录和警…

致敬第一个1024(第一次Java代码编程)

昨日&#xff0c;笔者刚刚下载好IDEA&#xff0c;今日&#xff0c;笔者将会实现第一次的Java代码&#xff01;&#xff01;信心满满&#xff01;&#xff01;下面请看笔者的代码吧&#xff01;&#xff01;骄傲的小心&#xff0c;已经澎湃&#xff01; 因此&#xff0c;本篇文…

如何实现一个SQL解析器

作者&#xff1a;vivo 互联网搜索团队- Deng Jie 一、背景 随着技术的不断的发展&#xff0c;在大数据领域出现了越来越多的技术框架。而为了降低大数据的学习成本和难度&#xff0c;越来越多的大数据技术和应用开始支持SQL进行数据查询。SQL作为一个学习成本很低的语言&#…

【正点原子I.MX6U-MINI应用篇】5、嵌入式Linux在LCD上显示BMP、JPG、PNG图片

一、BMP图像介绍与显示 我们常用的图片格式有很多&#xff0c;一般最常用的有三种&#xff1a;JPEG(或 JPG)、PNG、BMP和GIF。其中 JPEG(或JPG)、PNG以及 BMP 都是静态图片&#xff0c;而 GIF 则可以实现动态图片。 BMP(全称 Bitmap)是Window操作系统中的标准图像文件格式&am…

计算机学院第五次ACM周赛题解

目录 HF的智能小车车 Do you like Van game&#xff1f; 好姐姐的三角形 帮帮小陈 卷点 签个到就下班 现在是摸鱼时间 现在是摸鱼时间 PLUS HF的智能小车车 签到题目&#xff0c; #include<iostream>using namespace std;int main() {string arr;cin>>ar…

学生会信息管理系统

1、项目介绍 学生会信息管理系统拥有两种角色&#xff1a;学生和管理员 学生&#xff1a;查看活动和新闻信息、发布活动、登录注册 管理员&#xff1a;公共新闻管理、用户管理、活动审核等 2、项目技术 后端框架&#xff1a; Servlet、mvc模式 前端技术&#xff1a;jsp、c…

Linux(centos)安装Jenkins

Jenkins 是一个开源的, 基于Java的自动服务器&#xff0c;提供了一种建立持续集成和持续交付(CI/CD)流水线的简单方法 。 持续集成 (CI)是DevOps实践中&#xff0c;团队成员定期将他们的代码更改提交到版本仓库, 然后运行自动化的构建和测试. 持续交付(CD)是自动构建、测试和部…

【附源码】计算机毕业设计SSM物业管理系统设计

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

第九章 Ambari二次开发之自定义Flink服务 -- 自定义quiklinks链接

1、自定义quiklink链接功能概述 主要功能&#xff1a;用来配置第三方服务界面链接&#xff0c;如Yarn的管理界面。 服务可以通过在metainfo中加入一串quicklink的引用&#xff08;一串预定义的JSON字符串&#xff09;即可。ambari server能解析json文件并将其提供给UI&#xff…

CSS 2 CSS 选择器 - 2 2.5 属性选择器

CSS 文章目录CSS2 CSS 选择器 - 22.5 属性选择器2.5.1 CSS [attribute] 选择器2.5.2 CSS [attribute"value"] 选择器2.5.3 CSS [attribute~"value"] 选择器2.5.4 CSS [attribute|"value"] 选择器2.5.5 CSS [attribute^"value"] 选择器…

渠道数字化有什么好处?如何实现渠道数字化营销?

数字化转型是企业如今谋求商业升维的一种主要方式&#xff0c;即利用数字化技术和能力来赋能企业经营思维数字化、商业模式创新化&#xff0c;达到业务重构升级、实现业务的转型、创新&#xff0c;增长的目的。对于企业而言&#xff0c;数字化其实正是升维企业业务、企业流程及…

【电子通识】为什么高速信号传输要用差分

早期很多设备要接到计算机上,需要通过一些线径粗连接器笨重的总线。如GPIB接口(通用接口总线)是曾经大多台式仪器与计算机相连接的方式。 在文章:【蓝牙专题】蓝牙测试工具及性能标准 中,电脑就是通过USB转GPIB接口与MT8852进行连接,对低功耗蓝牙模块进行测试。 …

稳压二极管有什么特性?稳压二极管的特点

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…

Java泛型——帮助你更好的读懂源码<dog>

泛型 泛型就相当于集合的标签&#xff0c;我们在使用集合<>的时候&#xff0c;就是在使用泛型 要知道的是在jdk1.5以前我们只能把集合中的元素设计为Object&#xff0c;之后引入了泛型的概念来解决&#xff0c;我们把元素的类型设计成一个参数&#xff0c;这个类型参数…

【PyTorch深度学习项目实战100例】—— Pytorch时间序列电力数据多输出预测 | 第70例

前言 大家好,我是阿光。 本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmPy…

1024 你学算法了吗?

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

JUC - 多线程之 单例模式(八)

单例模式&#xff08;Singleton Pattern&#xff09;是一种非常简单的设计模式之一&#xff0c;当我们使用的对象要在全局唯一时就需要用到该模式&#xff0c;以保证对象的唯一性。除此之外&#xff0c;还能避免反复的实例化对象&#xff0c;减少内存开销 单例类提供了一种访问…

踩坑记录——USB键盘睡眠唤醒

踩坑记录——USB键盘睡眠唤醒 目录踩坑记录——USB键盘睡眠唤醒前言1 USB远程睡眠唤醒要注意的几个点2 MCU唤醒之后引起USB异常的几个点结束语前言 前段时间我用一个国产MCU实现了雷蛇键盘的效果&#xff0c;按键支持十键无冲&#xff0c;RGB灯支持单控任意一个灯任意一种颜色…