算法题
文章平均质量分 54
「已注销」
这个作者很懒,什么都没留下…
展开
-
剑指Offer——面试题5替换空格
Note: 剑指offer的题可以在牛客网上做题验证思路的正确性 依赖StringBuffer的replace实现,时间复杂度O(n),空间复杂度较高 思路:因为StringBuffer本身是可变字符串序列,可以修改,实际上它的可变是牺牲空间换取的。替换可能导致超出其容量,char数组的复制和新建。 public String replaceSpace(StringBuffer ...原创 2018-04-08 17:12:12 · 427 阅读 · 0 评论 -
<leetcode> 74. Search a 2D Matrix 二维数组中的查找
解法一,O(m+n) 一种O(m+n)的解法 解法一,O(logm+logn) 思路:一看题意其实就能发现,把二维数组平铺后就是一个一维有序数组,可以用二分查找了。其时间复杂度O(log(m*n))=O(logm+logn)。 public boolean searchMatrix(int[][] matrix, int target) { if(matrix == nul...原创 2018-04-05 22:03:36 · 167 阅读 · 0 评论 -
<leetcode> 240. Search a 2D Matrix II 二维数组中的查找
Note:《剑指offer》面试题4,二维数组中的查找 解法一,超时O(m*n) 这种解法应该算是回溯法,但因为超时了,所以也不知道具体能不能通过所有testcase。 思路:有点像树的周游,当大于当前的数字,继续向下或是向右,如果相等返回,如果小于,返回上一级。用递归的方式进行查找。相比于解法三,这种方法浪费时间的地方在于,当前数字小于target时,它有两条可能的道路,回溯法有可能两...原创 2018-04-05 21:02:36 · 347 阅读 · 0 评论 -
<leetcode> 287. Find the Duplicate Number 数组中的重复数
Note:和《剑指offer》面试题3:数组中的重复数字 类似 解法一:映射找环法O(n) 我当时想到的解法,要么时间复杂度不合要求,要么空间复杂度不合要求,看了这道题的discussion区,结合两个回答,总算是明白了这道题该怎么解比较简单。 两个回答的链接: - Java O(n) time and O(1) space solution. Similar to find loo...原创 2018-04-05 11:34:13 · 168 阅读 · 0 评论 -
<leetcode> 105. Construct Binary Tree from Preorder and Inorder Traversal 重建二叉树
Note:《剑指offer》面试题7 重建二叉树 题目:给出了前序和中序周游序列,根据这两个序列重建一棵二叉树 关键点:前序周游时,根节点为序列的第一个值;中序周游时,根节点左边的序列是根节点的左子树节点,右边是右子树节点 第1、2种方法思路一致,只不过用了Map以提高检索父节点和子节点index的效率。 思路:遍历除了第一个值的前序周游子序列,将所有其他值和根节点值对比,通过在中序周...原创 2018-04-03 21:30:12 · 341 阅读 · 0 评论 -
剑指Offer——面试题9用两个栈实现队列
解法一,有无效步骤 思路:stack1存放着逆序的剩余队列,stack2存放着正序的队列。pop的时候,当stack2为空,表示序列都在stack1中,则从stack1中循环pop后push到stack2,再从stack2中pop出队首;stack2不为空则直接pop。push的时候,当stack2不为空,把数据从stack2放回stack1,再把数push到stack1中。 public ...原创 2018-04-09 10:32:24 · 126 阅读 · 0 评论 -
剑指Offer——面试题6从尾到头打印链表
解法一,递归打印O(n) 思路:链表和树很像,很容易联想到树的常用解法递归,对第一个节点,先输出其next值再输出本身值,最后变成了tail最先输出,head最后输出。如果链表过长,递归会造成栈溢出,这种方法就不合适了。 public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { re...原创 2018-04-08 17:41:27 · 130 阅读 · 0 评论 -
剑指offer——调整数组顺序使奇数位于偶数前面
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 时间O(n),空间O(n)的解法 思路:既要保证奇数偶数各在数组一部分,还要保证奇数们/偶数们相对位置不变。如果没有额外的空间,目前我只想到O(n^2)时间复杂度的解法,当碰上奇数的时候,向前移动,并记录其最...原创 2018-04-13 15:23:50 · 184 阅读 · 0 评论