算法题
jia-huan
越菜越爱玩儿
展开
-
算法题003 -- [判断单链表中是否有环,找到环的入口节点] by java
程序运行截图:public class Node { // 这仅仅是一个标识,用来标记这是哪一个节点 public int tag; public Node next; public Node(Node next, int tag) { this.next = next; this.tag = tag; } // 逻辑断开 思路需要的tag public bool...原创 2018-09-29 18:26:08 · 1362 阅读 · 2 评论 -
算法题007 -- [对给定的排好序的链表,删除重复的元素,只留下出现一次的元素] by java
对给定的排好序的链表,删除重复的元素,只留下出现一次的元素举例:1->1->2, return 1->2. 1->1->2->3->3, return 1->2->3.代码package algorithm7;import algorithm6.ListNode;public class Algorithm7 { pub...原创 2018-11-12 16:05:21 · 420 阅读 · 0 评论 -
算法题010 -- [判断一个单链表是否是回文链表] by java
题目判断一个单链表是否是回文链表。如:[1, 2, 3, 2, 1] 就是一个回文链表,正着依次看链表中元素和反着依次看链表中元素都是一样的。要求:时间复杂度 O(n)空间复杂度 O(1)...原创 2018-11-14 18:23:37 · 574 阅读 · 0 评论 -
算法题011 -- [Add Two Numbers] by java
题目你将获得两个非空链表,表示两个非负整数。 数字以相反的顺序存储,每个节点包含一个数字。 使这两个数字相加并将其结果作为链表返回。你可以认为这两个数字不包含任何0开头的数字,除了数字0本身。举例Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)Output: 7 -> 0 -> 8分析其实代码比较简单,这条题目难点反而在于...原创 2018-11-14 22:50:24 · 107 阅读 · 0 评论 -
算法题015 -- [Implement Stack using Queues] by java
题目使用队列实现堆栈的以下操作:push(x) - 将元素x推入堆栈。pop() - 删除堆栈顶部的元素。top() - 获取顶部元素。empty() - 返回堆栈是否为空。要求:必须仅使用队列的标准操作 - 这意味着只能从尾部添加,从头部查看/弹出;查看大小和判空操作是有效的。根据使用的语言,原生可能不支持队列。 只要只使用队列的标准操作,就可以使用list或deque(双...原创 2018-11-20 16:01:31 · 159 阅读 · 0 评论 -
排序算法 -- 二分法插入排序
二分法插入排序其实和直接插入排序并没有太大的区别,原创 2016-09-19 12:18:42 · 679 阅读 · 0 评论 -
算法题013 -- [Valid Parentheses] by java
原创 2018-11-16 16:18:32 · 117 阅读 · 0 评论 -
算法题016 -- [Implement Queue using Stacks] by java
原创 2018-11-21 16:29:09 · 191 阅读 · 2 评论 -
算法题017 -- [Next Greater Element I] by java
题目有两个数组nums1和nums2(都没有没有重复元素),其中nums1的元素是nums2的子集。 在nums2的相应位置找到nums1元素的所有下一个更大的数字。比nums1中的数字x的下一个更大数字是nums2中对应数字右边第一个更大的数字。 如果它不存在,则为此数字输出-1。Example 1:Input: nums1 = [4,1,2], nums2 = [1,3,4,2]. ...原创 2018-11-22 14:49:30 · 187 阅读 · 0 评论 -
算法题014 -- [Min Stack] by java
题目设计一个支持push、pop、top和能返回最小值stack中最小值的stack举例MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); –> Returns -3. minStack.pop(); mi...原创 2018-11-19 17:41:14 · 134 阅读 · 0 评论 -
算法题018 -- [Evaluate Reverse Polish Notation] by java
题目原创 2018-11-26 10:44:06 · 164 阅读 · 0 评论 -
算法题012 -- [Rotate List] by java
题目将倒数K个节点放在链表头部举例Input 1->2->3->4->5->NULL and k = 2,Output 4->5->1->2->3->NULL.原创 2018-11-15 17:58:29 · 120 阅读 · 0 评论 -
算法题005 -- [求最大水容器] by java
题目给定n个非负整数a1,a2,...,an,其中每个表示坐标(i,ai)处的点。绘制n条垂直线,使得线i的两个端点在(i,ai)和(i,0)处。找到两条线,它们与x轴一起形成一个容器,使得容器含有最多的水。举例:Input:[1,3,5](0,1) -> (1,1)(0,3) -> (2,3)(0,5) -> (3,5)Output:3输入是[1,3,5...原创 2018-11-08 18:03:48 · 607 阅读 · 0 评论 -
排序算法——直接插入排序
代码总体思想:由少入多的来说int[] a = {5, 3}; 已插入排序的思想来说,角标为0,即5自然没什么好的,当到3的时候,把3记录下来,temp = 3,将数组中的3换成5,a[1] = 5,你可以把它理解成将前面的数据往后挪了一位,最后将数组中5的位置换成3int[] a = {5, 3, 4}; 这里,我们跨过上面的步骤,把它看成 int[] a = {3, 5, 4}原创 2016-05-14 23:54:14 · 375 阅读 · 0 评论 -
对手是谁?
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单:a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。//定义两个集合,里面是两只队伍ArrayList<String> teamA = new ArrayList<String>();teamA.add("a");teamA.add("b");teamA原创 2016-05-13 01:01:35 · 705 阅读 · 0 评论 -
兔子来了
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?第一个月:1第二个月:1第三个月:2第四个月:3第五个月:5第六个月:8第七个月:13...规律: n(第n个月) = n-2 + n-1 从第三个月开始,当月的兔子数是之前两个月的和public class RabbitCount原创 2016-05-11 09:48:31 · 688 阅读 · 0 评论 -
算法题001 -- [二叉树的镜像] by java
程序运行截图:import java.util.HashMap;public class Algorithm1 { /* [二叉树的镜像] [题目] 操作给定的二叉树,将其变换为源二叉树的镜像。 二叉树的镜像定义: 源二叉树 8 | | 6 10 | | | | 5 7 9 11 镜像二叉树...原创 2018-09-20 15:45:30 · 134 阅读 · 0 评论 -
算法题002 -- [删除链表中重复的结点] by java
程序运行截图:public class Node { public static final int HEAD = 0X66; public int value; public int count; public Node preNode; public Node nextNode; public Node() {} public Node(int va...原创 2018-09-27 15:10:16 · 713 阅读 · 0 评论 -
算法题006 -- [将两个排序的链表合并,返回一个新链表,返回的新链表也是排好序的] by java
题目将两个排序的链表合并,返回一个新链表,返回的新链表也是排好序的代码package algorithm6;public class Algorithm6 { public static void main(String[] args) { ListNode merge = mergeListNodesBySelf(getListNode1(), getListNode4())...原创 2018-11-09 13:45:23 · 359 阅读 · 0 评论 -
算法题004 -- [给定一个整数的数组nums,返回相加为target的两个数字的索引值] by java
题目给定一个整数的数组nums,返回相加为target的两个数字的索引值。假设每次输入都只有一个答案,并且不会使用同一个元素两次。举例:Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1]....原创 2018-11-07 15:10:40 · 859 阅读 · 0 评论 -
算法题008 -- [写一个程序找出两个单链表的交叉节点] by java
题目写一个程序找出两个单链表的交叉节点。算法要求:● If the two linked lists have no intersection at all, return null. ● The linked lists must retain their original structure after the function returns. ● You may assume ...原创 2018-11-12 23:54:36 · 646 阅读 · 0 评论 -
算法题009 -- [反转单链表] by java
题目反转单链表,可以使用迭代或者递归的方法思路具象化反转单链:反转前:反转中:反转后:(PS:上述图片搬运自 链表面试题(一):反转链表的算法实现)用文字来描述上图的步骤:1. 将V节点的next,指向上一个节点U2. 在步骤1完成前,需要有一个局部变量值记录住W节点,否则W节点就会遗失3. 最后指针指向W节点,继续下一个节点的处理以上就是每一个节点都需要做的事情...原创 2018-11-13 14:57:06 · 152 阅读 · 0 评论 -
算法题019 -- [Roman to Integer] by java
题目给定罗马数字,将其转换为整数。输入保证在1到3999的范围内。举例// ·个位数举例// I-1、II-2、III-3、IV-4、Ⅴ-5、VI-6、VII-7、VIII-8、Ⅸ-9// ·十位数举例// Ⅹ-10、XI-11、XII-12、XIII-13、XIV-14、XV-15、XVI-16、XVII-17、XVIII-18、XIX-19、XX-20、XXI-21、XXII-2...原创 2018-11-28 14:25:30 · 225 阅读 · 0 评论