算法实现
文章平均质量分 75
yangfeisc
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
快速找到整型数组中的特异数
解释: 特异数:在一个整型数组中仅出现一次的数。在算法设计中常常要求找出一个长度为N的数组A中存在的“特异数”,根据算法要求,可以分为以下几类:1、排序法:时间复杂度O(NlogN),空间复杂度O(1)算法思想:通过快速排序实现对于原数组A的排序,然后遍历数组,判断数组中元素与其前后元素是否相同,如果相同则继续遍历,否则返回该元素。原创 2014-09-29 23:05:04 · 938 阅读 · 0 评论 -
如何快速找出数组中只出现一次的两个数
今天和小伙伴们聊天,聊到一个问题:如何快速找出一个数组中只出现一次的两个数,其他元素出现两次?直观上,这个可以可以使用一个Map,Map对应的键值key就是数组中的元素,value就是这个元素出现的次数。这样我们通过一次遍历数组中的元素,如果元素出现在map中,则将其对应的value加1,否则将元素添加到map中,这样遍历完一遍数组,我们就可以得到数组中每个元素对应出现的次数,然后再通过遍历一原创 2015-04-27 19:42:43 · 4714 阅读 · 0 评论 -
求两个有序整型数组元素和的第K大值
今天与人讨论问题,发现一个很有意思的题目:给定两个有序的整型数组,要求在最优的情况下找到两个数组元素求和后的第K大的值。1、刚开始遇到这个问题,我直观的想法就是分配一个数组保存两个数组元素的和,然后利用找有序数组中第K大元素的方法进行求解。然后分析了一下时间和空间复杂度,假设原始的两个有序数组分别为A和B,对应的长度为m和n,那么A和B中元素和就有m*n个,即我们需要分配一个新的数组C[m*n原创 2015-04-21 22:28:26 · 2927 阅读 · 1 评论 -
LeetCode: Insert Interval & Merge Interval
1、Insert IntervalDescription: Given a set of non-overlapping intervals, the intervals were initially sorted according to their start times, insert a new interval into the intervals (merge if nec原创 2015-04-14 21:04:12 · 480 阅读 · 0 评论 -
LeetCode: Binary Tree Right Side View
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.For example:Given the following binary tree, 1原创 2015-04-06 22:18:33 · 421 阅读 · 0 评论 -
Java迭代实现二叉树的前序、中序、后序遍历
我们都知道,二叉树的遍历有三种形式:前序遍历、中序遍历、后序遍历,三种遍历的规则分别如下:1)前序遍历:先遍历根节点,然后遍历左子节点,最后遍历右子节点,简记为“根-左-右”;2)中序遍历:先遍历左子节点,然后遍历根节点,最后遍历右子节点,简记为“左-根-右”;3)后序遍历:先遍历左子节点,然后遍历右子节点,最后遍历根节点,简记为“左-右-根”;根据遍历规则,我们可以采用“原创 2015-03-20 21:06:49 · 5450 阅读 · 4 评论 -
LeetCode: Sudoku Solver
public void solveSudoku(char[][] board) { fillSudoku(board, 0); } /** * 填写数独中缺失数字,数独中缺失数字用'.'表示 * @param board--数独 * @param n--已经填写的格子数 */ public boolean fillSudoku(char[][] board, i原创 2015-02-28 21:46:42 · 501 阅读 · 0 评论 -
LeetCode: Container With Most Water [Java]
Description: Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i,ai) and (原创 2015-01-24 22:39:20 · 518 阅读 · 0 评论 -
LeetCode--Palindrome Number [Java]
Determine whether an integet is a palindrome. Do this without extra space.这个题目要求不使用额外空间判断一个整数是不是回文数字。我们知道判断一个字符串是不是回文字符串,那么我们首先想到的是通过将整型数字变成字符串处理,然后依次判断首尾字符是否相同来判断是否是回文串。但是这样会带来不必要的空间开销,不满足题目要求。那么原创 2014-12-14 21:41:12 · 523 阅读 · 0 评论 -
LeetCode: Longest Substring Without Repeating Characters
Leetcode: Longest Substring Without Repeating Characters--字符串中找不存在重复字符的最大连续子字符串,并返回子字符串对应的长度。原创 2014-11-27 22:27:14 · 598 阅读 · 1 评论 -
二分法求解平方根的“陷阱”
对于一个整数求解其平方根可以使用“二分法”和“牛顿法”。所谓“二分法”就是不断地缩小平方根所在的范围,知道收敛到一个数。例如求解数k的平方根t,首先设置t的范围为[left, right](其中left和right分别初始化为1, k),然后判断m=(l+k)/2与k的平方根t的关系,如果m比t小,则t的范围为[m+1, right],否则为[left, m-1],然后依次循环,知道lef原创 2014-09-29 22:58:09 · 8750 阅读 · 4 评论 -
Morris算法进行二叉树遍历
二叉树作为计算机中的一个重要数据结构,在很多领域都会涉及到,而提到二叉树,我们首先想到的就是其3种遍历方式--前序、中序和后序,对于这3种遍历方式,我们很容易通过使用递归或者迭代(http://blog.youkuaiyun.com/yangfeisc/article/details/44497429)的方式实现,时间复杂度为O(N)。但是这两种实现方式都需要使用堆栈进行节点信息的存储,即空间复杂度也是O(N原创 2015-05-12 19:45:37 · 9502 阅读 · 4 评论
分享