数据结构与算法
alpha_2017
这个作者很懒,什么都没留下…
展开
-
广度搜索 -- 9.2 Word Ladder -- 求具体的路径 -- 图解
/**********************************************************************************************************9.2 Word Ladder II描述Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) fromstart to end, such that:原创 2020-07-02 22:59:49 · 249 阅读 · 0 评论 -
广度搜索 -- 9.1 Word Ladder -- 求是否有解 -- 图解
/**********************************************************************************************************当题目看不出任何规律,既不能用分治,贪心,也不能用动规时,这时候万能方法——搜就派上用场了。搜索分为广搜和深搜,广搜里面又有普通广搜,双向广搜, A* 搜索等。深搜里面又有普通深搜,回溯法等。广搜和深搜非常类似(除了在扩展节点这部分不一样),二者有相同的框架,如何表示状如何扩展状态?如何判原创 2020-07-01 23:24:05 · 263 阅读 · 0 评论 -
6.4 First Missing Positive --- 图解
/**********************************************************************************************************Given an unsorted integer array, find the first missing positive integer.For example, Given [1,2,0] return 3, and [3,4,-1,1] return 2本质上是桶排序 (buc原创 2020-07-01 22:48:14 · 143 阅读 · 0 评论 -
排序 --- 6.2 Merge Two Sorted Lists || 6.3 Merge k Sorted Lists --- 图解
/**********************************************************************************************************Merge two sorted linked lists and return it as a new list. e new list should be made by splicingtogether the nodes of the first two lists.*******原创 2020-07-01 20:28:38 · 132 阅读 · 0 评论 -
排序 -- 6.1 Merge Sorted Array --- 图解
/**********************************************************************************************************Given two sorted integer arrays A and B, merge B into A as one sorted array.Note: You may assume that A has enough space to hold additional elemen.原创 2020-07-01 20:13:44 · 143 阅读 · 0 评论 -
查找 -- 7.1 Sear for a Range -- 图解
/**********************************************************************************************************描述Given a sorted array of integers, find the starting and ending position of a given target value.Your algorithm’s runtime complexity must be in t原创 2020-07-01 20:03:30 · 186 阅读 · 0 评论 -
查找 --- Search Insert Position --- 图解
/**********************************************************************************************************7.2 Search Insert Position描述Given a sorted array and a target value, return the index if the target is found. If not, return the indexwhere it wo原创 2020-07-01 19:48:54 · 212 阅读 · 0 评论 -
链表 -- 2.2.1 Add Two Numbers -- 图解
描述You are given two linked lists representing two non-negative numbers. e digits are stored in reverseorder and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.Input: (2 -> 4 -> 3) + (5 -> 6 ->原创 2020-06-30 22:35:00 · 181 阅读 · 0 评论 -
暴力枚举 --- 8.1 Subsets --- 图解
/**********************************************************************************************************描述Given a set of distinct integers, S, return all possible subsets.Note:• Elements in a subset must be in non-descending order.• e solution set原创 2020-06-29 21:48:19 · 204 阅读 · 0 评论 -
栈 --- 4.1.3 Largest Rectangle in Histogram -- 图解
/**********************************************************************************************************Given n non-negative integers representing the histogram’s bar height where the width of each bar is1, find the area of largest rectangle in the hi原创 2020-06-26 22:26:42 · 180 阅读 · 0 评论 -
栈 -- 4.1.1 Valid Parentheses I-II -- 图解
描述Given a string containing just the characters ’(’, ’)’, ’{’, ’}’, ’[’ and ’]’, determine if theinput string is valid.e brackets must close in the correct order, ”()” and ”()[]” are all valid but ”(]” and ”([)]” arenot.class Solution{public: .原创 2020-06-26 19:59:15 · 157 阅读 · 0 评论 -
字符串 -- 3.15 Length of Last Word -- 图解
描述Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return thelength of last word in the string.If the last word does not exist, return 0.Note: A word is defined as a character sequence consists of non-space charac原创 2020-06-26 18:08:35 · 142 阅读 · 0 评论 -
字符串 --- 15.6 Minimum Window Substring --- 图解
/**********************************************************************************************************Given a string S and a string T, find the minimum window in S which will contain all the charactersin T in complexity O(n).For example, S = ”ADOBE原创 2020-06-26 11:40:49 · 256 阅读 · 0 评论 -
动态规划 --- 13.1 Triangle ---- 相邻路径最小和 -- 图解
/**********************************************************************************************************描述Given a triangle, find the minimum path sum from top to boom. Each step you may move to adjacentnumbers on the row below.For example, given th原创 2020-06-25 23:49:21 · 193 阅读 · 0 评论 -
字符串 --- 3.5 Longest Palindromic Substring --- 图解
/**********************************************************************************************************Given a string S, find the longest palindromic substring in S. You may assume that the maximumlength of S is 1000, and there exists one unique long原创 2020-06-25 22:29:05 · 140 阅读 · 0 评论 -
数组 -- 2.1.22 Single Number -- 图解
/**********************************************************************************************************Given an array of integers, every element appears twice except for one. Find that single one.Note: Your algorithm should have a linear runtime comp原创 2020-06-24 21:36:36 · 153 阅读 · 0 评论 -
字符串 -- 3.1 Valid Palindrome -- 图解
/**********************************************************************************************************描述Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoringcases.For example,”A man, a plan, a can原创 2020-06-24 21:17:12 · 177 阅读 · 0 评论 -
数组 -- 13.2 Maximum Subarray --图解
描述Find the contiguous subarray within an array (containing at least one number) which has the largestsum.For example, given the array [-2,1,-3,4,-1,2,1,-5,4], the contiguous subarray [4,-1,2,1] hasthe largest sum = 6.class Solution{public: in.原创 2020-06-23 22:16:17 · 158 阅读 · 0 评论 -
二叉树 -- 5.4.3 Path Sum -I-II -- 图解
/**********************************************************************************************************Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all thevalues along the path equals the given sum.原创 2020-06-23 21:44:17 · 119 阅读 · 0 评论 -
二叉树 -- 5.4.2 Maximum Depth of Binary Tree -- 图解
Given a binary tree, find its maximum depth.e maximum depth is the number of nodes along the longest path from the root node down to thefarthest leaf node.class Solution{public: int maxDepth(TreeNode *root){ if(!root) return 0; .原创 2020-06-23 21:12:36 · 114 阅读 · 0 评论 -
二叉树 --5.1.3 Binary Tree Zigzag Level Order Traversal --图解
/**********************************************************************************************************Given a binary tree, return the zigzag level order traversal of its nodes’ values. (ie, from le to right,then right to le for the next level and原创 2020-06-22 23:56:17 · 179 阅读 · 0 评论 -
二叉树 -- 5.1.1 Binary Tree Level Order Traversal -2 -- 图解
/**********************************************************************************************************Given a binary tree, return the boom-up level order traversal of its nodes’ values. (ie, from le toright, level by level from leaf to root).For原创 2020-06-22 23:31:22 · 164 阅读 · 0 评论 -
二叉树 -- 5.1.1 Binary Tree Level Order Traversal-1 -- 图解
/**********************************************************************************************************Given a binary tree, return the level order traversal of its nodes’ values. (ie, from le to right, level bylevel).For example: Given binary tree原创 2020-06-22 23:27:57 · 147 阅读 · 0 评论 -
数组 -- removeElement -- 图解
/**********************************************************************************************************Given an array and a value, remove all instances of that value in place and return the new length.e order of elements can be changed. It doesn’t m原创 2020-06-22 23:02:05 · 169 阅读 · 0 评论 -
数组 -- 3Sum Closet -- 图解
3Sum Closest描述Given an array S of n integers, find three integers in S such that the sum is closest to a given number,target. Return the sum of the three integers. You may assume that each input would have exactly onesolution.For example, given array原创 2020-06-22 22:39:05 · 236 阅读 · 0 评论 -
先序、中序和后序数组两两结合重构二叉树 -- 图解
先序、中序和后序数组两两结合重构二叉树package chapter_3_binarytreeproblem;import java.util.HashMap;public class Problem_21_PreInPosArrayToTree { public static class Node { public int value; public Node left; public Node right; public Node(int data) {..原创 2020-06-19 22:40:25 · 190 阅读 · 0 评论 -
字符串 -- 将整数字符串转换为成整数值 -- 图解
package chapter_5_stringproblem;public class Problem_05_ConvertStringToInteger { public static int convert(String str) { if (str == null || str.equals("")) { return 0; // can not convert } char[] chas = str.toCharArray(); if (!isValid...原创 2020-06-17 00:50:32 · 263 阅读 · 0 评论 -
位运算 -- 思考
1. 不用额外变量交换两个整数的值2.不用任何比较判断找出两个数中较大的数3.整数中的二进制表达中有多少个14.在数组中找到出现奇数次的数,其它数字出现偶数次5.在其它数出现k次的数组中找到只出现一次的数...原创 2020-06-12 00:17:44 · 150 阅读 · 0 评论 -
字符串题目 --- 递归和动态规划
1.最长公共子序列2.最长公共子串3.数组中的最长连续序列4.最长递增子序列原创 2020-06-12 00:15:01 · 141 阅读 · 0 评论 -
二叉树
树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关的题目基本都可以用递归思想解决,当然有些题目非递归解法也应该掌握,如非递归遍历节点等等。本文努力对二叉树相关题目做一个较全的整理总结,希望对找工作的同学有所帮助。二叉树节点定义如下:struct BinaryTreeNode{ int m_nValue;...原创 2020-06-07 20:27:25 · 500 阅读 · 0 评论 -
链表
链表操作的常见题目链表结点声明如下:struct ListNode{ int m_nKey; ListNode * m_pNext;};题目列表:1. 求单链表中结点的个数2. 将单链表反转3. 查找单链表中的倒数第K个结点(k > 0)4. 查找单链表的中间结点5. 从尾到头打印单链表6. 已知两个单链表pHead1 和pHead2 各自有序,把它们合并成一个链表依然有序7. 判断一个单链表中是否有环8. 判断两个单链表是否相交9...原创 2020-06-07 20:10:37 · 454 阅读 · 0 评论 -
深度搜索与广度搜索
深度搜索适用场景输入数据:如果是递归数据结构,如单链表,二叉树,集合,则百分之百可以使用深度搜索;如果是非递归数据结构状态转换图:树或者图求解目标:必须要走到最深,比如二叉树中必须走到叶子结点,那么此方式适合深度搜索思考的步骤是求路径条数,还是路径本身(动作序列);常见要求,求满足条件的路径个数,求一个可行解,求所有可行解。如果是路径条数,则不需要存储路径。 如果是求路径本身,则需要一个数组path[]存储路径。跟宽度搜索不同,宽搜虽然最终求的也是一条路径,但是需要存储扩展过程中原创 2020-05-21 19:44:16 · 1177 阅读 · 1 评论 -
二叉树的遍历 --- 递归与非递归
package chapter_3_binarytreeproblem;import java.util.Stack;public class Problem_01_PreInPosTraversal { public static class Node { public int value; public Node left; public Node right; public Node(int data) { this.value = data; } } .原创 2020-05-21 19:46:08 · 207 阅读 · 0 评论 -
查找二叉树
1. 查找树的创建(createTree)假设有如下数组4,1,45,78,345,23,12,3,6,21首先选定4为root,然后遍历剩下的数字,如果大于等于4则放到4的右侧,小于4放到4的左侧,最后构建成的树:所有的左孩子都小于父节点,所有的右孩子都大于等于父节点。如下图:2. 遍历查找树(displayTree转载 2017-03-19 17:58:59 · 212 阅读 · 0 评论 -
红黑树
介绍另一种平衡二叉树:红黑树(Red Black Tree),红黑树由Rudolf Bayer于1972年发明,当时被称为平衡二叉B树(symmetric binary B-trees),1978年被Leonidas J. Guibas 和Robert Sedgewick改成一个比较摩登的名字:红黑树。红黑树和之前所讲的AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,转载 2017-03-20 16:56:53 · 205 阅读 · 0 评论 -
根据二叉树的先序、中序遍历结果重建二叉树
先序遍历为:1 2 4 5 3 6,中序遍历为:4 2 5 1 6 3思路:先序遍历的第一个元素为根节点,在中序遍历中找到这个根节点,从而可以将中序遍历分为左右两个部分,左边部分为左子树的中序遍历,右边部分为右子树的中序遍历,进而也可以将先序遍历除第一个元素以外的剩余部分分为两个部分,第一个部分为左子树的先序遍历,第二个部分为右子树的先序遍历。由上述分析结果,可以递归调用构转载 2017-06-10 21:49:26 · 185 阅读 · 0 评论 -
Hash表、Hash函数及冲突解决
#1.Hash表 哈希表(Hash table,也叫散列表),是根据key而直接进行访问的数据结构。也就是说,它通过把key映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 以数据中每个元素的关键字K为自变量,通过散列函数H(k)计算出函数值,以该函数值作为一块连续存储空间的的单元地址,将该元素存储到函数值对应的单元中。转载 2017-08-06 17:50:45 · 366 阅读 · 0 评论