随笔分类 - 数据结构与算法
摘要:牛顿法: 设r是f(x) = 0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0)+f'(x0)(x-x0),求出L与x轴交点的横坐标 x1 = x0-f(x0)/f'(x0),称x1为r的一次近似值。 过点(x1,f(x1))做曲线
阅读全文
摘要:关于旋转排序数组leetcode中共有4道题目,思路都是基于二分查找。 什么是旋转排序数组? 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 具体问题 找最小值和普通搜索两种 找最小值问题 1.假
阅读全文
摘要:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 = 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码? 代码: 原始问题: 用一个
阅读全文
摘要:位运算问题 异或 (^ ) 只出现一次的数字I 136题: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 分析: 根据 A ^ A=0 ; 0 ^ A=A 将整个数组俩
阅读全文
摘要:二叉树遍历相关 二叉树的前序遍历 144题: 给定一个二叉树,返回它的前序遍历。 分析: 递归的容易;迭代版用栈做,写一个辅助函数visitAlongLeftBranch() 代码: 前序递归版: 前序迭代版: 前序迭代版图示: 二叉树的中序遍历 94题: 给定一个二叉树,返回它的中序遍历。 分析:
阅读全文
摘要:这些问题归为哈希表,倒不一定都是要建哈希表来做,有的题目可以用定长的数组起到哈希表的作用。 而且很多题有其他更好一些的方法。 数组中的问题 两数之和 1题(easy): 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设 每个输入只对应一种答案 ,且同样的元素不能被重复利用。
阅读全文
摘要:思路: 我们先假设待排序序列各元素均在区间[0, k]上。 思想是:在待排序序列中,如果我们能统计出有多少元素小于或等于某一个元素,我们也就知道了该元素的正确位置。例如,对于待排序序列{2,5,3,0,2,3,0,3},我们统计出有8个元素小于等于5(包括5自己),那么5这个元素就应该被排序到第8位
阅读全文
摘要:链表问题 在链表问题中,最常见的方法就是“双指针”,“快慢指针”。 最常用的技巧就是加“fakehead” 删除系列 删除链表中的节点 203题(easy): 删除链表中等于给定值 val 的所有节点。 示例: 分析: 最基础的删除操作,用到fakehead,定义一个指针一趟遍历,判断指针的下一位是
阅读全文
摘要:回溯法 全排列系列 46题: 给定一个 没有重复数字 的序列,返回其所有可能的全排列。 示例: 代码: 子集系列 78题: 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集。 说明:解集不能包含重复的子集。 示例: 代码: 解释: 在迭代所有数字时,对于每个新数字,我们可以选择它,
阅读全文
摘要:卡特兰数又称卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列。以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名,其前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 12...
阅读全文

浙公网安备 33010602011771号