![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
D.Chuan
If not me , who ?
展开
-
【LintCode-66】二叉树的前序遍历(Java实现-递归算法/非递归算法)
递归算法代码记录: public List<Integer> preorderTraversal(TreeNode root) { if(root==null){ return new ArrayList(); } List<Integer> resultList=new ArrayList<>(); re原创 2017-11-07 17:21:39 · 652 阅读 · 0 评论 -
二叉搜索树、B-树、B+树
1. 二叉搜索树1.1 二叉搜索树的定义二叉搜索树满足以下几个特性(1)所有非叶子结点至多拥有两个儿子(Left和Right)(2)所有结点存储一个关键字(3)非叶子节点的左/右子树上的任意节点值都小/大于该节点上的值如:1.2 二叉搜索树的搜索以及性能二叉搜索树的搜索从根节点开始,如果查询的关键字与结点的值相等则命中;否则比较要查询的关键字和该节点结点值的大小,根据大小进入左/右节点继续搜索转载 2018-01-04 14:35:45 · 416 阅读 · 0 评论 -
字符串匹配的KMP算法(最通俗易懂解释)
举例来说,有一个字符串”BBC ABCDAB ABCDABCDABDE”,我想知道,里面是否包含另一个字符串”ABCDABD”? 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。 这种算法不太容易理解,网上有很多解释,但读起来都很费劲。直到读到Jake Boxer的文章,我才真转载 2018-01-04 10:35:14 · 465 阅读 · 0 评论 -
【LintCode-655】大整数加法(Java实现)
第一次代码记录: public String addStrings(String num1, String num2) { int length1=num1.length(); int length2=num2.length(); int sum=0; String result=""; while(length1原创 2017-11-06 00:11:36 · 1401 阅读 · 1 评论 -
【LintCode-93】平衡二叉树(Java实现-递归算法)
第一次代码记录: public boolean isBalanced(TreeNode root) { if(root==null||(root.left==null&&root.right==null)){ return true; } if(root.left!=null&&root.right!=null){原创 2017-11-05 23:37:24 · 470 阅读 · 0 评论 -
【LintCode-457】经典二分查找问题(Java实现)
第一次代码记录: public int findPosition(int[] nums, int target) { if(nums==null||nums.length==0){ return -1; } int start=0; int end=nums.length-1; while原创 2017-11-05 13:42:21 · 334 阅读 · 0 评论 -
【LintCode-167】链表求和(Java实现)
第一次代码记录: public ListNode addLists(ListNode l1, ListNode l2) { ListNode result=l1; ListNode temp=l1; ListNode lastNode=null; int sum=0; while(l1!=null||l2!=n原创 2017-11-05 17:52:16 · 473 阅读 · 0 评论 -
【LintCode-569】各位相加(Java实现-循环/递归算法/O(1))
循环算法代码记录: public static int addDigits(int num) { String numString=num+""; int length=numString.length(); int sum=num; while(length!=1){ sum=0;原创 2017-11-05 17:22:26 · 412 阅读 · 0 评论 -
【LintCode-408】二进制求和(Java实现)
第一次代码记录(不带注释版本): public String addBinary(String a, String b) { int alength=a.length(); int blength=b.length(); String result=""; int sum =0; while(alength>=1|原创 2017-11-05 16:28:33 · 2849 阅读 · 0 评论 -
【LintCode-1】A + B 问题(Java实现)
第一次代码记录: public int aplusb(int a, int b) { int carry=0; int sum =0; while(true){ sum=a^b;//异或,相同为0,不同为1 //1.且运算,当且仅当都为1时,为1,其余为0; // 2.左进1位,例如 0010,进位后,0100;原创 2017-11-05 15:47:36 · 1272 阅读 · 0 评论 -
【LintCode-463】整数排序(Java实现-冒泡排序优化)
冒泡排序优化方案1: public void sortIntegers(int[] A) { for(int j=0;j<A.length-1;j++){ Boolean state=true; for(int i=0;i<A.length-1-j;i++){ if(A[i]>A[i+1]){原创 2017-11-05 12:45:03 · 376 阅读 · 0 评论 -
【LintCode-463】整数排序(Java实现-冒泡排序/选择排序/插入排序)
冒泡排序: public void sortIntegers(int[] A) { for(int j=0;j<A.length-1;j++) for(int i=0;i<A.length-1-j;i++){ if(A[i]>A[i+1]){ int temp=A[i]; A[i]=A[i+原创 2017-11-04 21:52:14 · 275 阅读 · 0 评论 -
【LintCode-452】删除链表中的元素(Java实现)
第一次代码记录: public ListNode removeElements(ListNode head, int val) { ListNode resultNode=null; if(head==null){ return null; } while(head.val==val){原创 2017-11-04 00:12:09 · 905 阅读 · 0 评论 -
【LintCode-454】矩阵面积(Java实现)
第一次代码记录:public class Rectangle { private int width; private int height; public Rectangle(int width,int height){ this.width=width; this.height=height; } public int get原创 2017-11-03 23:17:28 · 649 阅读 · 0 评论 -
【LintCode-632】二叉树的最大节点(Java实现)
第一次代码: public TreeNode maxNode(TreeNode root) { if (root == null) { return null; } else if (root.left != null && root.right != null) { TreeNode leftN原创 2017-11-03 21:55:19 · 686 阅读 · 0 评论 -
【LintCode-366】斐波纳契数列 (Java实现)
第一次代码记录:public class Solution { /* * @param n: an integer * @return: an ineger f(n) */ public int fibonacci(int n) { int a=0; int b=1; int c=0; if原创 2017-11-03 22:57:35 · 331 阅读 · 0 评论 -
【LintCode-69】二叉树的层次遍历(Java实现)
如果您有更好的解法,欢迎您在留言区补充,感谢!! public List<List<Integer>> levelOrder(TreeNode root) { if(root==null){ return new ArrayList(); } List<List<Integer>> resultList=new Array原创 2017-11-07 17:31:43 · 654 阅读 · 0 评论 -
【LintCode-67】二叉树的中序遍历(Java实现-递归算法/非递归算法)
递归算法代码记录: public List<Integer> preorderTraversal(TreeNode root) { if(root==null){ return new ArrayList(); } List<Integer> resultList=new ArrayList<>(); re原创 2017-11-07 17:25:06 · 3064 阅读 · 2 评论 -
数据结构-红黑树(超详细,强烈推荐!!)
(一) 基本概念Red-Black Tree 称为“红黑树”,是一种自平衡二叉查找树,红黑树和 AVL 树类似,在进行插入和删除时需要通过旋转和重新着色来维持其红黑树的特性。红黑树的应用相当广泛,主要是用它来存储有序的数据,它的时间复杂度为 O(logn),查询效率非常高。1. 红黑树和 AVL 树的区别:红黑树并不追求“完全平衡” —— 它只要求部分地达到平衡要求,降低了对旋转的要求,转载 2018-01-09 22:18:50 · 1505 阅读 · 0 评论