首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
数据结构和算法
获赞
5532
粉丝
479
关注
49
看过 TA
753
男
门头沟学院
2013
前端工程师
IP属地:上海
专注算法讲解,关注我一起学习算法。
私信
关注
拉黑
举报
举报
确定要拉黑数据结构和算法吗?
发布(144)
评论
数据结构和算法
关注TA,不错过内容更新
关注
04-18 17:42
已编辑
门头沟学院 前端工程师
【数据结构和算法】合并链表,递归和非递归两种解决方式
1,非递归解决 这题比较简单,因为链表是升序的,我们只需要遍历每个链表的头,比较一下哪个小就把哪个链表的头拿出来放到新的链表中,一直这样循环,直到有一个链表为空,然后我们再把另一个不为空的链表挂到新的链表中。我们就以3→4→7→9和2→5→6两个链表来画个图看一下是怎么合并的。 public ListNode mergeTwoLists(ListNode l1, ListNode l2) { //下面4行是空判断 if (l1 == null) return l2; if (l2 == null) ...
数据结构和算法
0
点赞
评论
收藏
分享
04-18 17:38
已编辑
门头沟学院 前端工程师
【数据结构和算法】BFS和DFS两种方式解决
1,BFS解决 其实这就是二叉树的BFS,也可以看下之前讲的373,数据结构-6,树 , 就是这样,一层一层打印,使用队列解决 public ArrayList<arraylist<integer>&gt; levelOrder(TreeNode root) { //边界条件判断 if (root == null) return new ArrayList&lt;&gt;(); //队列 Queue<treenode> queue = new ...
数据结构和算法
0
点赞
评论
收藏
分享
04-18 17:37
已编辑
门头沟学院 前端工程师
【数据结构和算法】大数相加,3种方式解决
1,从尾部插入 实际上这道题求的是两个字符串相加,我们就用两个很短的字符串"12367"+"89"为例画个图来看下是怎么计算的 它相当于两个字符串从最右边开始相加,比如我们要计算s字符串的最右边的那个数字和t字符串最右边的那个字符相加 int i = s.length() - 1, j = t.length() - 1; int x = s.charAt(i) - '0'; int y = t.charAt(j) - '0'; int sum = x + y; 把计算的结果放到一个新的字符串后面,但字符串每一位只能保存一位数字,而我们相加的结果sum可能是个两位数,所以这里我们只取他的个位...
魔笛magic:
你好,请问第一种解法循环判断条件中的carry!=0是什么意思?
数据结构和算法
0
点赞
评论
收藏
分享
03-10 19:06
已编辑
门头沟学院 前端工程师
【数据结构和算法】链表是否有环3种方式解决
1,快慢指针解决 判断链表是否有环应该是老生常谈的一个话题了,最简单的一种方式就是快慢指针,慢指针针每次走一步,快指针每次走两步,如果相遇就说明有环,如果有一个为空说明没有环。代码比较简单 public boolean hasCycle(ListNode head) { if (head == null) return false; //快慢两个指针 ListNode slow = head; ListNode fast = head; while (fast != null && fast.next != null) {...
rabbitttt:
如果链表中只有一个节点且无环,则快指针一次走两步会发生错误,所以第一句判断语句应加上||head.next==NULL
数据结构和算法
0
点赞
评论
收藏
分享
04-18 17:37
已编辑
门头沟学院 前端工程师
【数据结构和算法】3种方式解决
1,使用栈解决 链表的反转是老生常谈的一个问题了,同时也是面试中常考的一道题。最简单的一种方式就是使用栈,因为栈是先进后出的。实现原理就是把链表节点一个个入栈,当全部入栈完之后再一个个出栈,出栈的时候在把出栈的结点串成一个新的链表。原理如下 import java.util.Stack; public class Solution { public ListNode ReverseList(ListNode head) { Stack<listnode> stack= new Stack&lt;&gt;(); //把链表节点全部摘掉放到栈中 ...
ydh1993:
尾递归的: ListNode next = head.next;第一个自己定义的next这个节点作用是 head.next = newHead; newHead是指新定义的一个空链表么,
数据结构和算法
0
点赞
评论
收藏
分享
04-18 17:36
已编辑
门头沟学院 前端工程师
【数据结构和算法】剑指offer-JZ3. 从尾到头打印链表
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 答案: 1,使用栈来解决 从尾到头打印链表,首先这个链表是单向的,如果是双向的,直接从后往前打印就行了,这里链表不是单向的。 这里最容易想到的一种方式就是把链表的节点全部压栈,因为栈是先进后出的一种数据结构,全部压栈之后再一个个出栈即可, 压栈完之后再一个个出栈 public ArrayList<integer> printListFromTailToHead(ListNode listNode) { Stack<listnode> stack = new Stack&l...
数据结构和算法
0
点赞
评论
收藏
分享
04-18 17:36
已编辑
门头沟学院 前端工程师
【数据结构和算法】剑指offer-JZ2. 替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 答案: 1,先把字符串转换为单个字符 这里让求的是把字符串中的空格替换成%20,其中一种实现方式就是申请一个临时数组,然后再遍历这个字符串的每个字符,如果不是空格就把遍历的字符添加到临时数组中,如果是空格就添加3个字符'%','2','0'分别到临时数组中,最后再把临时数组转化为字符串即可。 public String replaceSpace(StringBuffer str) { int length = s...
数据结构和算法
0
点赞
评论
收藏
分享
04-18 18:14
已编辑
门头沟学院 前端工程师
【数据结构和算法】二维数组中的查找(暴力和线性查找)
******************** 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 答案: 1,暴力求解 当然最容易想到的是暴力求解,就是一个个查找,如果找到就返回true,没找到就返回false,代码很简单,没什么可说的。 public boolean findNumberIn2DArray(int[][] matrix, int target) { if (matrix == null || matrix.length == 0 ...
数据结构和算法
0
点赞
评论
收藏
分享
03-10 16:22
已编辑
门头沟学院 前端工程师
【数据结构和算法】剑指offer-JZ50. 数组中重复的数字(4种实现方式)
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 答案: 1,使用集合set 最简单的方式就是把数组中的元素一个个加入到集合set中,加入的时候如果有重复的,则直接返回 import java.util.HashSet; import java.util.Set; public class Solution { // Parameters: // numb...
数据结构和算法
0
点赞
评论
收藏
分享
1
5
6
7
8
9
10
创作者周榜
更多
关注他的用户也关注了:
牛客网
牛客企业服务