Java
一只前进的菜菜鸟
这个作者很懒,什么都没留下…
展开
-
按之字形顺序打印二叉树
描述给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)数据范围:0 \le n \le 15000≤n≤1500,树上每个节点的val满足|val| <= 100∣val∣<=100要求:空间复杂度:O(n)O(n),时间复杂度:O(n)O(n)例如:给定的二叉树是{1,2,3,#,#,4,5}该二叉树之字形层序遍历的结果是 [[1],[3,2],[4,5]]思路:如果当前层是从左往右的顺序访问,那么下一层入栈和当前..原创 2021-12-19 17:30:25 · 88 阅读 · 0 评论 -
数组中只出现一次的数字[牛客网]
描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路:①整体异或,最终结果一定是不同数据的异或,结果x一定不为零!!!②x != 0—>(10100001),一定有比特位为1,意味这什么?不同的2个数据,该位置的比特位是不同的。③假设是第n位,根据遍历检测每一个数组的第一n位,根据是否为1,将其分为A、B两组④凡是相同的数据一定在同一组⑤结论A或B(转换成一个整型数组里除了一个数字之外,其他的数字都出现了两次。请写程序找出原创 2021-12-18 18:11:16 · 114 阅读 · 0 评论 -
两个链表的第一个公共结点[牛客网]
数据范围:n \le 1000n≤1000要求:空间复杂度O(1)O(1),时间复杂度O(n)O(n)例如,输入{1,2,3},{4,5},{6,7}时,两个无环的单向链表的结构如下图所示:可以看到它们的第一个公共结点的结点值为6,所以返回结点值为6的结点。输入描述:输入分为是3段,第一段是第一个链表的非公共部分,第二段是第二个链表的非公共部分,第三段是第一个链表和二个链表的公共部分。 后台会将这3个参数组装为两个链表,并将这两个链表对应的头节点传入到函数FindFirstCom...原创 2021-12-17 21:45:39 · 842 阅读 · 0 评论 -
topK问题
链接:最小的K个数__牛客网题目描述:给定一个长度为 n 的可能有重复值的数组,找出其中不去重的最小的 k 个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4(任意顺序皆可)。数据范围:0≤k,n≤100000\le k,n \le 100000≤k,n≤10000,数组中每个数的大小0≤val≤10000 \le val \le 1000 0≤val≤1000要求:空间复杂度 O(n)O(n)O(n) ,时间复杂度 O(nlogn)O(nlogn)原创 2021-12-08 09:51:19 · 160 阅读 · 0 评论 -
字符串的排列
一、题目描述输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。数据范围:n < 10n<10要求:空间复杂度O(n!)O(n!),时间复杂度O(n!)O(n!)输入描述:输入一个字符串,长度不超过10,字符只包括大小写字母。二、思路...原创 2021-12-07 11:12:32 · 362 阅读 · 0 评论 -
倒置字符串
题目描述:将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I依次输出倒置之后的字符串,以空格分割思路:先整体把原创 2021-12-05 19:43:39 · 197 阅读 · 0 评论 -
二叉树中和为某一值的路径(回溯法)
题目描述:输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点 开始往下一直到叶结点所经过的结点形成一条路径。例如:我们输入的整数为7,就有以下4种路径。思路:首先我们看到回溯法的题:首先脑子里要能想到 深度优先遍历,结果集,待选结果!!!回溯的本质:穷举的过程,在穷举的过程中要进行剪枝。回溯过程:1.先添加根结点2.更新目标值3.判断是否满足条件4.DFS5.回退代码实现:import.原创 2021-12-03 19:34:15 · 650 阅读 · 0 评论 -
删除链表中的重复结点
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。思路:首先要明白排序的链表,重复的结点一定是相连的!!!①定义一个傀儡结点,newHead.next = head②定义前后指针,prev last③大前提是last不能为空的情况下循环找重复的值④若last.val != last.next.val,前后指针一人一步走继续找⑤若last.val == last.next.val,后指针继续往前走,因为有可能是多个重复...原创 2021-12-01 17:49:01 · 337 阅读 · 0 评论 -
面向对象语言的基本特征:封装、继承、多态
一、封装语法:使用private关键字,修饰字段和方法,只能在当前的类中使用。意义:比较安全。但对类的调用者来说,对类的使用成本降低了二、继承(is-a的关系)1、程序上理解什么是继承???就是将共性进行抽取,使用关键字extends来实现继承。class Dog extends Animal{}dog:子类、派生类Animal:父类、基类、超类优点:减少代码的重写注意:①在Java中,只能通过extends来继承一个来,而且只能继承一个,不能继承多个类 ..原创 2021-10-31 20:52:56 · 129 阅读 · 0 评论