
算法题目
超悦人生
公众号【超悦编程】,专注于校招、算法、数据结构和计算机基础知识。
展开
-
面试官:来写个代码求一下两个数的最大公约数吧
面试官真的只是想让你写个代码吗?原创 2020-09-04 19:05:29 · 5743 阅读 · 0 评论 -
栈的压入、弹出序列(java实现)
问题描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解决方案创建一个栈,如果栈顶元素是要待弹出序列的值,则弹出,否则一直压栈,直...原创 2019-11-09 16:16:52 · 311 阅读 · 0 评论 -
包含min函数的栈(用辅助栈和不用辅助栈两种写法 java实现)
问题描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。解决方案1利用一个辅助栈来存储最小值,入栈和出栈时同时维护辅助栈,代码如下:import java.util.Stack;public class Solution { Stack<Integer> stack = new Stack<Int...原创 2019-11-02 21:31:30 · 269 阅读 · 0 评论 -
正则表达式匹配(java实现)
问题描述请实现一个函数用来匹配包括’.‘和’ * ‘的正则表达式。模式中的字符’.'表示任意一个字符,而 ’ * '表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab * ac * a"匹配,但是与"aa.a"和"ab * a"均不匹配解决方案递归解决,代码如下: public boolean...原创 2019-10-31 10:26:14 · 616 阅读 · 0 评论 -
对称二叉树(java实现)
问题描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。解决方案采用层次遍历,注意空节点也要加入队列,代码如下:/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; pub...原创 2019-10-30 19:52:03 · 493 阅读 · 0 评论 -
删除链表中重复的节点(Java实现)
问题描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5解决方案注意边界即可,代码如下:/* public class ListNode { int val; ListNode next = n...原创 2019-10-30 19:09:33 · 882 阅读 · 1 评论 -
按之字形顺序打印二叉树(Java实现)
问题描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。解决方案代码如下:import java.util.ArrayList;import java.util.LinkedList;/*public class TreeNode { int val = 0; Tr...原创 2019-10-28 23:01:25 · 295 阅读 · 0 评论 -
把二叉树打印成多行(Java实现)
问题描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。解决方案代码如下:import java.util.ArrayList;import java.util.LinkedList;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right ...原创 2019-10-28 22:50:48 · 121 阅读 · 0 评论 -
二进制中1的个数(Java实现)
问题描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解决方案代码如下: public int NumberOf1(int n) { if(n == 0) return 0; boolean flag = false; if(n < 0){ n = (1 <...原创 2019-10-28 22:29:46 · 290 阅读 · 0 评论 -
矩形覆盖
问题描述我们可以用2 * 1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2 * 1的小矩形无重叠地覆盖一个2 * n的大矩形,总共有多少种方法?解决方案用动态规划来解,f(n) = f(n - 1) + f(n - 2)代码如下:public int RectCover(int target) { if(target < 3) r...原创 2019-10-28 20:51:12 · 111 阅读 · 0 评论 -
用两个栈实现队列(Java实现)
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解决方案代码如下:import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> s...原创 2019-10-28 20:40:38 · 213 阅读 · 0 评论 -
LeetCode4. Median of Two Sorted Arrays(java实现)
问题描述There are two sorted arrays nums1 and nums2 of size m and n respectively.Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).You may assume nums1 ...原创 2019-10-25 23:56:20 · 126 阅读 · 0 评论 -
LeetCode25. Reverse Nodes in k-Group(每k个节点反转链表,java实现)
问题描述k个一组反转链表。解决方案代码如下://测试 public static void main(String[] args){ Node root = new Node(1); root.next = new Node(2); root.next.next = new Node(3); root.next.n...原创 2019-10-25 16:00:17 · 271 阅读 · 0 评论 -
leetcode.637 二叉树的层平均值(java实现)
问题描述Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array.Example 1:Input: 3 / \ 9 20 / \ 15 7Output: [3, 14.5, 11]Exp...原创 2019-10-25 11:12:15 · 408 阅读 · 0 评论 -
LeetCode113. Path Sum II(java)
问题描述Given a binary tree and a sum, find all root-to-leaf paths where each path’s sum equals the given sum.Note: A leaf is a node with no children.Example:Given the below binary tree and sum = 22...原创 2019-10-25 10:37:54 · 194 阅读 · 0 评论 -
矩阵的转置(O(1)空间复杂度)(Java实现)
问题描述对矩阵求转置,要求空间复杂度为O(1)。解决方案 public static void matrixTranspose(int[] arr,m,n){ if(arr == null || arr.length <= 1) return; for(int i = 0 ;i < arr.length;i +...原创 2019-10-24 10:31:46 · 547 阅读 · 0 评论 -
求根号2的值(两种方法 java实现)
计算根号2的值,保留小数点后10位。二分查找法和牛顿迭代法原创 2019-10-23 16:26:11 · 4296 阅读 · 0 评论 -
Kth Number问题的三种解法(java实现)
给定一个无序数组,找到其中第k大的数。分别用堆解法、快排变行、BFPRT算法三张解法实现,并对比分析。原创 2019-10-23 11:51:46 · 603 阅读 · 0 评论 -
求二叉树两个节点的最近公共父节点的两种方法(java实现)
二叉树两个节点的最近公共父节点的两种方法(java实现)原创 2019-10-20 18:08:18 · 1498 阅读 · 0 评论 -
字符串数组组成的最小字典序字符串
给定一个字符串数组,返回由该字符串数组组成的最小字典序字符串。原创 2019-09-29 19:20:31 · 1850 阅读 · 1 评论 -
经典算法题 :整数中数字3(大众点评笔试题)
原题:0-999999之间的所有整数数字中,任何一位都不包括数字3的数字总数有多少个?其实这道题目非常简单,就是9^6 = 531441个。因为每一位不能取3,就有9种可能,六位数就是9^6。不妨将题目一般化,及n取任意整数,0-n之间的所有整数数字中,任何一位都不包括数字3的数字总数有多少个?原创 2019-09-30 20:12:53 · 756 阅读 · 0 评论 -
数组能否累加至某个数
数组能否累加至某个数.给定一个数组arr和一个整数aim。如果可以任意选择arr中的数字,能否累加至aim,能则返回true,否则返回false。原创 2019-10-08 16:01:38 · 457 阅读 · 0 评论 -
校验某个字符串是否是合法的IPv4或者IPv6地址
校验某个字符串是否是合法的IPv4或者IPv6地址,是合法的IPv4地址则输出"IPv4",是合法的IPv6地址则输出"IPv6",否则输出"Nither".原创 2019-09-16 22:27:31 · 2393 阅读 · 0 评论 -
在行和列都排好序的矩阵中找数
给定一个行和列均为有序的二维数组,查找其中是否存在某数,存在则返回true,否则返回false原创 2019-09-02 15:41:59 · 177 阅读 · 0 评论 -
LCP 5. 发 LeetCoin
力扣决定给一个刷题团队发LeetCoin作为奖励。同时,为了监控给大家发了多少LeetCoin,力扣有时候也会进行查询。原创 2019-09-27 10:48:56 · 648 阅读 · 1 评论 -
由二叉树的前序和中序遍历重构二叉树
已知某二叉树的前序遍历和中序遍历的结果,重建出该二叉树。原创 2019-09-27 10:32:56 · 254 阅读 · 0 评论 -
查找二叉树中序遍历后继节点(java实现)
查找某个二叉树的中序遍历某节点的后继节点,没有则返回空。原创 2019-09-26 20:41:12 · 806 阅读 · 0 评论 -
复制含有随机指针的单链表
复制含有随机指针的单链表原创 2019-09-10 11:41:34 · 162 阅读 · 0 评论 -
打印两个有序链表的公共部分
打印两个有序链表的公共部分原创 2019-09-09 14:03:42 · 166 阅读 · 0 评论 -
反转单链表
反转单链表原创 2019-09-09 14:01:59 · 155 阅读 · 0 评论 -
之字形打印数组
给定一个二维数组,要求按照之字形将数组中的元素依次打印出来原创 2019-09-03 22:35:39 · 384 阅读 · 0 评论 -
转圈打印矩阵(二维数组)
问题描述给定一个二维数组,转圈将其打印出来解决方案首先设计一个只打印一圈的方法,然后循环控制,代码如下://主方法 public static void circlePrintMatrix(int[][] arr){ if(arr == null) return; int row1 = 0; int col...原创 2019-09-02 11:10:23 · 459 阅读 · 0 评论 -
查找数组中只出现一次的两个元素
给定一个数组,除了其中两个元素出现一次外,其余元素均出现了两次,找出只出现一次的两个元素原创 2019-09-02 09:54:35 · 511 阅读 · 0 评论 -
用数组来实现栈和队列的数据结构
用数组来实现栈和队列的数据结构原创 2019-09-01 13:55:20 · 212 阅读 · 0 评论 -
可以返回最小值的栈
实现一个栈,该栈除了可以实现栈应有的功能外,可以弹出最小值,且时间复杂度为O(1)。原创 2019-09-01 13:52:35 · 301 阅读 · 0 评论 -
无序数组排序后最大间隔
给定一个无序整型数组,求将其排好序后,相邻两个数之间的最大差值。原创 2019-08-31 23:52:18 · 479 阅读 · 1 评论 -
判断链表是否有环
判断链表是否有环,有环则返回首个环节点,无环则返回为空。原创 2019-09-11 22:26:46 · 124 阅读 · 0 评论 -
判断两个链表是否相交
判断两个链表是否相交,相交则返回第一个相交节点,不相交则返回空。首先判断两个链表是否有环,1.若均无环,则是两个无环链表的相交问题。首先判断尾结点是否相同,尾结点相同则相交,不相同则不相交。查找相交节点可以用哈希表或者计数的方法2.若均有环,则有两种相交情况,环外相交,转化为无环链表相交问题,若环内相交,则在环内判断,以其中一个环的入环节点往下走,看能否遇到另一个环的入环节点,不能则返回空;3.一个有环,一个无环,则肯定不相交。原创 2019-09-11 23:15:01 · 404 阅读 · 0 评论 -
反转双向链表
反转双向链表原创 2019-09-12 10:05:31 · 876 阅读 · 0 评论 -
最大子数组和(java实现)
给定一个数组,求该数组最大子数组和,动态规划的方法。原创 2019-09-23 20:46:07 · 1307 阅读 · 0 评论