算法
C_calary
每天进步一点点,我也可以很优秀
展开
-
lintcode 415有效回文串(Java)
题目 1.题目 给定一个字符串,判断其是否为一个回文串。只包含字母和数字,忽略大小写。 2.注意事项 你是否考虑过,字符串有可能是空字符串?这是面试过程中,面试官常常会问的问题。 3.例子 在这个题目中,我们将空字符串判定为有效回文。 样例 “A man, a plan, a canal: Panama” 是一个回文。 “race a car” 不原创 2017-06-30 15:27:11 · 716 阅读 · 0 评论 -
lintcode 加一(Plus One )(Java)
1.题目详情 Given a non-negative number represented as an array of digits, plus one to the number. The digits are stored such that the most significant digit is at the head of the list. 给定一个非负数,表示一个原创 2017-07-05 14:21:24 · 976 阅读 · 0 评论 -
lintcode 整数排序 II | 归并排序(Java)
题目 给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。样例 给出 [3, 2, 1, 4, 5], 排序后的结果为 [1, 2, 3, 4, 5]。归并排序 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并原创 2017-07-07 11:07:47 · 859 阅读 · 0 评论 -
lintcode整数排序|冒泡排序算法(Java)
冒泡排序算法是很低效的一种排序算法,但是也是我们入门算法的基础。算法原理 冒泡排序算法的运作如下:(从前往后) 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 冒泡原创 2017-06-27 15:43:19 · 571 阅读 · 0 评论 -
lintcode整数排序|选择排序算法(Java)
原理:选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。时间复杂度:交换次数比冒泡排序少多了,由于交换所需CPU时间比比较所需的CPU时间多,n值较小时,选择排序比冒泡排序快。 由于是两次for循环,所以时间复杂度是O(n^2)。 public void sor原创 2017-06-27 16:14:23 · 551 阅读 · 0 评论 -
lintcode整数排序|插入排序算法(Java)
插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2) public void sortIntegers(int[] A) { int n = A.length; for (int i = 1; i < n; i++){ if (A[i - 1] >原创 2017-06-29 22:55:51 · 451 阅读 · 0 评论 -
lintcode 整数排序 | 希尔排序算法(Java)
希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 详细讲解戳这里百度百科public class Solution { /** * @param A a原创 2017-07-04 12:00:15 · 528 阅读 · 0 评论 -
lintcode 摆动排序(Wiggle Sort) (Java)
题目 给你一个没有排序的数组,请将原数组就地重新排列满足如下性质 nums[0] <= nums[1] >= nums[2] <= nums[3]….样例 给出数组为 nums = [3, 5, 2, 1, 6, 4] 一种输出方案为 [1, 6, 2, 5, 3, 4]分析 1.个人分析:首先要满足nums[0] <= nums[1] >= nums[2] <= nums[3原创 2017-07-10 12:04:45 · 901 阅读 · 0 评论 -
lintcode 最后一个单词的长度(Java)
题目 给定一个字符串, 包含大小写字母、空格’ ‘,请返回其最后一个单词的长>度。 如果不存在最后一个单词,请返回 0 。注意事项 一个单词的界定是,由字母组成,但不包含任何的空格。样例 1.给定 s = “Hello World”,返回 5。 2.给定 s = “Hello World “,返回 5。(有空格) 3.给定 s = “=”World “,返回 5。原创 2017-07-04 12:49:36 · 693 阅读 · 0 评论 -
lintcode 字符串查找(strStr) (Java)
1.题目 对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。2.样例 如果 source = “source” 和 target = “target”,返回 -1。 如果 source = “abcdabcdefg” 和 target = “bcd”,返回原创 2017-07-05 15:36:57 · 954 阅读 · 0 评论 -
lintcode 逆序对(Reverse Pairs )(Java)
题目 在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。给你一个数组,求出这个数组中逆序对的总数。 概括:如果a[i] > a[j] 且 i < j, a[i] 和 a[j] 构成一个逆序对。样例 序列 [2, 4, 1, 3, 5] 中,有 3 个逆序对 (2, 1), (4, 1), (4, 3),则返回 3 。分析 解法一:考虑暴力解法,两个f原创 2017-07-11 13:39:55 · 1262 阅读 · 0 评论 -
lintcode 比较字符串(Compare Strings ) (Java)
题目 比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母 注意事项 在 A 中出现的 B 字符串里的字符不需要连续或者有序。样例 给出 A = “ABCD” B = “ACD”,返回 true 给出 A = “ABCD” B = “AABC”, 返回 false分析 只有大写字母,一共26个,遍历A的时候,往里面压,遍历B的时原创 2017-07-11 14:54:22 · 574 阅读 · 0 评论 -
lintcode 报数(Count and Say) (Java)
题目 报数指的是,按照其中的整数的顺序进行报数,然后得到下一个数。如下所示: 1, 11, 21, 1211, 111221, … 1 读作 “one 1” -> 11. 11 读作 “two 1s” -> 21. 21 读作 “one 2, then one 1” -> 1211. 给定一个整数 n, 返回 第 n 个顺序。 注意事项 整数的顺序将表原创 2017-07-11 17:26:14 · 925 阅读 · 0 评论 -
lintcode 整数排序 II | 快速排序(Java)
题目 给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。样例 给出 [3, 2, 1, 4, 5], 排序后的结果为 [1, 2, 3, 4, 5]。快速排序 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以原创 2017-07-11 23:40:40 · 844 阅读 · 0 评论 -
lintcode Guess Number Game(Java)
1.题目 We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to guess which number I picked. Every time you guess wrong, I’ll tell you whether the number is原创 2017-07-03 10:32:23 · 1453 阅读 · 0 评论 -
lintcode 主元素(Majority Number)(Java)
题目 给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。 注意事项 You may assume that the array is non-empty and the majority number always exist in the array.样例 给出数组[1,1,1,1,2,2,2],返回 1分析 思路一:自己的思路 首原创 2017-07-12 13:34:23 · 787 阅读 · 0 评论 -
lintcode 最大子数组(Maximum Subarray )(Java)
题目 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。 注意事项 子数组最少包含一个数样例 给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6分析 思路一:个人思路 进行两次循环,遍历所有可能的情况,找到最大的子数组,时间复杂度为O(n^2); 思路二:动态规划(查资料) sum[i]原创 2017-07-12 15:11:09 · 909 阅读 · 0 评论 -
lintcode 两数之和(Two Sum )(Java)
题目 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。 注意事项 你可以假设只有一组答案。样例 给出 numbers = [2, 7, 11, 15], target = 9, 返回 [1, 2].挑战 Ei原创 2017-07-13 14:16:29 · 5493 阅读 · 1 评论 -
LeetCode 832. 翻转图像(Flipping an Image) (Swift)
[题目] Given a binary matrix A, we want to flip the image horizontally, then invert it, and return the resulting image. To flip an image horizontally means that each row of the image is reverse...原创 2018-05-23 15:44:58 · 688 阅读 · 0 评论