一丢丢算法
jing1008-wang
这个作者很懒,什么都没留下…
展开
-
判断两个链表是否相交
JAVA堆和栈比较两个链表,判断是否相交,找出相交的第一个点? 首先应该清楚两个单链表相交要么都是无环链表,要么都是有环链表,不存在一个有环链表和一个无环链表相交,因为两个链表一旦相交则后续的链表都应该是相同的(1)将其中任意一个链表的环打破,即让尾结点指向null(记下保存原本应当指向的位置),然后判断第二个链表是否含有环,若第二个链表无环则相交,否则不相交(2)利用判断单...原创 2018-08-30 21:51:56 · 11732 阅读 · 0 评论 -
链表相关问题
今日份要点,叮~~链表的创建和遍历,统计节点个数,查找倒数第k个节点(查找中间节点于此类似),合并两个链表(个人感觉有点归并的意思),单链表从尾到头打印(使用栈和递归方法)package lianbiao;import java.util.Stack;class Node{ int data;//数据域 Node next;//指针域 public Node...原创 2018-08-31 22:05:31 · 163 阅读 · 0 评论 -
二叉树
首先定义二叉树结构,接着创建二叉树,实现二叉树的递归先、中、后序遍历package treeLearn;import java.util.LinkedList;import java.util.List;import javax.xml.soap.Node;public class CreateTree { public static void main(String...原创 2018-09-01 21:28:28 · 94 阅读 · 0 评论 -
旋转数组后的最小值
旋转数组后的最小值 旋转之后的数组其实给以划分为两部分有序数组,最小的值其实就是两个有序数组的分界线,用二分查找解决此题(仅仅限于数组没有相同元素,如果有相同元素只能通过比那里数组)思路:(1)定义两个指针low,high,一个指向数组的第一个元素,另一个指向数组的最后一个元素,由于该数组是有序数组旋转得到,所有第一个元素必然大于最后一个元素(2)找到数组中间元素若中间元...原创 2018-09-02 20:58:04 · 81 阅读 · 0 评论 -
两个栈实现一个队列以及两个队列实现一个栈
1、用两个队列实现一个栈?两个队列添加元素,哪个队列为空,由于在输出数据时,要进行相应元素的移动(除去尾部元素),所以要在对应不为空的队列进行元素的添加,所以要在对应不为空的队列进行元素的添加;在输出元素时,要进行两个队列的变化操作,不为空的队列要依次向为空的队列中添加元素,直到尾元素输出即可2、用两个栈实现一个队列?一个栈只负责添加元素,第二个栈在弹出元素时,首先判断当前栈是否为...原创 2018-09-02 20:58:56 · 96 阅读 · 0 评论 -
求数组最大子段和
给定一个数组,求这个数组中最大连续子段和:例如:Input: [-2,1,-3,4,-1,2,1,-5,4],Output: 6Explanation: [4,-1,2,1] has the largest sum = 6.(1)首先看到这个题我能想到的暴力破解,就是遍历数组,定义一个最大连续数组和,当前数组和大于则替换时间复杂度为O(n^2)//暴力破解O(n^2)...原创 2018-09-24 21:57:22 · 864 阅读 · 0 评论 -
求最大连续数组
题目描述:给定一个二进制数组,找到含有相同数量的0和1的最长连续子数组(1)方法一,暴力破解法,获取字符串的子串,n^2个,然后判断每个串是否符合0,1个数相同,这样做的时间复杂度为O(n^3)稍微优化,如果一个长度为n的子串满足条件,那么这n个元素的和加起来一定=(n/2);这样的话,循环增量加就可以了,不用每个子串从头计算,复杂度降为O(N^2)(2)将所有的数字0替换为-...原创 2018-09-24 22:20:21 · 340 阅读 · 1 评论 -
排序算法
一、冒泡时间复杂度:O(n^2),空间复杂度:O(1),稳定的算法冒泡的思路:相邻元素之间进行比较,选出最大或最小的元素放至数组最后一个位置普通冒泡就不介绍了,这里来写一下,上浮下沉的冒泡排序public class BubbleBetter { public static void main(String[] args) { // TODO 自动生成的方法存根 int...原创 2018-09-30 21:52:26 · 100 阅读 · 0 评论