
数据结构与算法
别找我打球了
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
华为、字节跳动、腾讯等面试出现的编程题汇总
本帖记录今年春招以来我在牛客网上看到了各大公司面经里面出现的编程题,持续更新,欢迎大家补充华为面试算法题汇总Leetcode2 链表相加一个汽车工厂,实现工厂模式leetcode最长公共前缀图的最短路径算法 Djstrla找出字符串第一次只出现一次的字符最大的连续1个个数32位数据 按位进行调换一面砖墙,画一条竖线,哪里画线穿过的砖块最少。...原创 2020-03-12 09:09:02 · 2010 阅读 · 2 评论 -
剑指Offer全题解—Java版本
1.数组中重复的数字题目描述数组中重复的数字在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。解题思路首先因为要求的时间复杂度是O(n),空间复杂度是O(1),所以不能...原创 2020-03-01 21:52:48 · 763 阅读 · 0 评论 -
Hash表的有关概念(Hash函数、Hash冲突解决方法)总结
散列表(Hash)表散列表的基本概念在线性表和树表的查找中,记录在表中的位置和记录的关键字之间不存在特定的关系,在这些表中查找记录的时候就需要进行一系列的关键字比较。这一类查找的方法是建立在比较的基础上的,查找的效率取决于比较的次数1.散列函数:将一个把查找表的关键字映射成该关键字对应的地址的函数,记为Hash(Key) = Addr这里的地址可以是数组下标,索引或者是内存的地址散列函数可...原创 2020-02-19 14:32:34 · 330 阅读 · 0 评论 -
一文带你全面了解树的有关知识(满二叉树、BST、AVL、B树,B+树、红黑树)
一、树的定义与基本术语树时N(N >= 0)各节点的有限集合,N = 0的时候,称为空树,在任意一颗非空的树中应该满足:有且仅有一个特定的称为根的节点当N > 1的时候,其余节点可以分为m个互不相交的有限集合T1,T2,…,Tm,其中每一个集合本身也是一颗树,并且称为根节点的子树显然树的定义是递归的,是一种递归的数据结构,树作为一种逻辑结构,同时也是一种分层的结构,具有以下...原创 2020-02-19 11:59:45 · 705 阅读 · 0 评论 -
Leetcode分类刷算法之位运算专题
Leetcode位运算专题1. 颠倒二进制位190. 颠倒二进制位用一个变量res去存储结果,依次得到要转换数字的低位,然后一次保存到res中,es每得到一位之后所以腾出位置保存下一位原数字 1011 ,res = 0res 左移一位,res = 0,得到 1011 的最低位 1 加过来, res = 11011 右移一位变为 101 res = 1 左移一位,res =...原创 2020-02-08 15:00:57 · 231 阅读 · 0 评论 -
Leetcode分类刷算法之分治贪心专题
Leetcode 分治贪心算法分治:1. Pow(x, n)50. Pow(x, n)求x的n次方x = n次方 等于 n为偶数的情况下 x 的 n/2次方 * x 的n/2次方n为基数的情况下 x 的 n/2次方 * x 的 n / 2 次方 * xpublic double myPow(double x, int n) { long N = n; ...原创 2020-01-17 15:50:03 · 315 阅读 · 0 评论 -
Leetcode分类刷算法之BFS、DFS专题
Leetcode 上的BFS和DFSBFS1. 单词接龙127.单词接龙简单BFS,依次将所有的合法值加入到队列中去,在遍历这些合法值public int ladderLength(String beginWord, String endWord, List<String> wordList) { Queue<String> queue = new...原创 2020-01-17 14:03:18 · 377 阅读 · 0 评论 -
Leetcode分类刷算法之回溯专题
Leetcode上必做的回溯算法题目回溯,回溯的时候减枝,两大类排列和组合问题,总结排列组合类型的各自特点,以及考虑去重!暴力枚举 回溯回溯法写法思路:定义全局结果数组调用递归函数返回全局结果数组定义递归函数参数,动态变化,一般为分支结果、限制条件等终止条件,将分支结果添加到全局数组剪枝条件调用递归逐步产生结果,回溯搜索下一结果1.组合总和39. 组合总和p...原创 2020-01-13 20:58:49 · 306 阅读 · 0 评论 -
Leetcode分类刷算法之二分查找专题
二分查找,有序数组直接考虑二分查找,如旋转有序数组的最小值、旋转有序数组查找目标值、有序数组目标值的最左和最右位置、二分查找寻找峰值,二分查找问题,要考虑while(left <= right)是否可以等于,right = mid还是right = mid +1,返回值是left还是right,反正多考虑考虑边界问题。原创 2020-01-13 20:58:03 · 365 阅读 · 0 评论 -
十大排序算法Java实现及其Leetcode算法题
十大排序算法Java实现及其Leetcode算法题选择排序选择排序从数组中选择最小的元素,将它与第一个元素交换位置,再从数组剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置,不断进行这样的操作,直到将整个数组排序。选择排序需要 N^2 / 2次比较 以及 N次交换,它的运行时间和输入无关,即使是排好序的数组也需要这么多的比较和交换操作。public static void se...原创 2020-01-08 21:23:53 · 977 阅读 · 1 评论 -
Leetcode分类刷算法之二叉树专题
Leetcode二叉树问题二叉树的遍历1.二叉树的前序遍历144. 二叉树的前序遍历非递归版本 public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<>(); if (root == null)r...原创 2020-01-07 11:48:49 · 231 阅读 · 0 评论 -
Leetcode分类刷算法之栈和队列专题
Leetcode栈和队列1.最小栈155.最小栈class MinStack { private Stack<Integer> data; private Stack<Integer> min; /** initialize your data structure here. */ public MinStack() { ...原创 2020-01-02 12:18:24 · 315 阅读 · 1 评论 -
Leetcode分类刷算法之链表专题
Leetcode 链表1.反转链表206. 反转链表 public ListNode reverseList(ListNode head) { if (head == null) return head; ListNode cur = head; ListNode pre = null; while (cur != null) ...原创 2020-01-01 17:33:58 · 196 阅读 · 0 评论 -
Leetcode分类刷算法之数组专题
Leetcode 数组专题1.删除排序数组中的重复项 I1.leetcode 26. 删除排序数组中的重复项双指针:数组完成排序后,可以放两个指针,index 和 i,i是快指针,只要nums[i] = nums[index]我们就增加i以跳过重复项当我们遇到nums[i] != nums[index]的时候,此时跳过重复项已经结束,必须将nums[i]复制到nums[index]上,然后...原创 2019-12-30 17:05:04 · 297 阅读 · 0 评论 -
Leetcode分类刷算法之字符串专题
leetcode 字符串问题先来几个题目热热身1. leetcode 709. 转换成小写字母709. 转换成小写字母a - 32 = A;public String toLowerCase(String str) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < str.le...原创 2019-12-24 16:03:36 · 268 阅读 · 0 评论 -
Leetcode分类刷算法之动态规划专题
1. leetcode198 打家劫舍198. 打家劫舍dp[i]表示当前位置能偷到的最大值max(当前位置偷+前两个位置的最大值,当前位置不偷即前一个位置的最大值)dp[i] = Math.max(dp[i - 2]+ nums[i],dp[i-1]);public int rob(int[] nums) { if (nums == null || nums.len...原创 2019-12-19 15:53:13 · 400 阅读 · 0 评论