leetcode
iwtbs_kevin
曾在快手/阿里实习,现在字节跳动data担任推荐算法工程师
展开
-
面试高频leetcode算法题
快速排序def quick_rank(nums): if len(nums) <= 1: return nums left,right = [],[] mid = nums[0] for i in nums[1:]: if i > mid: right.append(i) else...原创 2020-04-06 12:54:10 · 844 阅读 · 0 评论 -
一道面试算法题
最近面微信让做这道题题目:给一个装满水的 8 升满壶和两个分别是 5 升、3 升的空壶,想个办法,使得其中一个水壶恰好装 4 升水,每一步的操作只能是倒空或倒满思路:遍历+状态记忆最终结果不是最优的。。问题应该是返回条件不太对,但是没想到怎么改,先放出来吧class State: def __init__(self,a,b,c): self.a...原创 2020-03-17 10:51:16 · 114 阅读 · 0 评论 -
leetcode数据结构算法框架——二分查找
二分查找思路很简单,注意细节二分查找框架int binarySearch(int[] nums, int target) { int left = 0, right = ...; while(...) { int mid = (right + left) / 2; if (nums[mid] == target) { ...原创 2019-10-20 19:40:23 · 163 阅读 · 0 评论 -
leetcode数据结构算法框架——递归
递归浅析递归递归代码最重要的两个特征:结束条件和自我调用。自我调用是在解决子问题,而结束条件定义了最简子问题的答案。int func(你今年几岁) {// 最简子问题,结束条件if (你1999年几岁) return 我0岁;// 自我调用,缩小问题规模return func(你去年几岁) + 1;}写递归的技巧我的一点心得是:明白一个函数的作用并相信它能完成这个任务,千万不...原创 2019-10-20 19:26:38 · 224 阅读 · 0 评论 -
leetcode数据结构算法框架——动态规划
动态规划动态规划算法(Dynamic Programming,简称 DP)似乎是一种很高深莫测的算法,你会在一些面试或算法书籍的高级技巧部分看到相关内容,什么状态转移方程,重叠子问题,最优子结构等高大上的词汇也可能让你望而却步。实际上,动态规划是一种常见的「算法设计技巧」,并没有什么高深莫测,至于各种高大上的术语,那是吓唬别人用的,只要你亲自体验几把,这些名词的含义其实显而易见,再简单不过了。...原创 2019-10-20 19:27:18 · 405 阅读 · 0 评论 -
leetcode数据结构算法框架——回溯
回溯法实际上回溯算法就是一个 N 叉树的前序遍历加上后序遍历而已,而且回溯算法是有模板的,一旦掌握,就能秒杀相关问题。下面,我们来循序渐进地理解。// 二叉树遍历框架def traverse(root): if root is None: return # 前序遍历代码写在这 traverse(root.left) # 中序遍历代码写在这 trave...原创 2019-10-20 19:29:11 · 236 阅读 · 0 评论