Algorithm
K.Sun
这个作者很懒,什么都没留下…
展开
-
[JS] Flatten array
拍平数组,这个在lodash里也是很常见的方法,那自己实现一个看看:const flatten = arr => [].concat(...arr.map(v => (Array.isArray(v) ? v : [v])));测试Flatten([1, [2], [[3], 4], 5]); // [1, 2, [3], 4, 5]逻辑很简单,如果元素是数组的话,那就直接...原创 2019-12-23 19:50:20 · 417 阅读 · 0 评论 -
字符串转整数(String to Integer (atoi))
public class StringtoInteger { public int myAtoi(String str) { if (str == null) return 0; str = str.trim(); if (str.equals("") || str.equals("+") || str.equals(原创 2016-10-10 23:02:18 · 1100 阅读 · 0 评论 -
最长回文子字符串(Longest Palindromic Substring)
Given a string S, find thelongest palindromic substring in S. You may assume that the maximumlength ofS is 1000, and there exists one unique longest palindromicsubstring.原创 2016-10-11 22:12:04 · 1192 阅读 · 0 评论 -
没有重复字符的最长子字符串(Longest Substring Without Repeating Characters)
Given a string, find the length of the longest substring without repeating characters.原创 2016-10-12 21:09:02 · 465 阅读 · 0 评论 -
动态规划之最优的子结构属性(Optimal Substructure Property)
原文地址:http://www.geeksforgeeks.org/dynamic-programming-set-2-optimal-substructure-property/As we discussed in Set 1, following are the two main properties of a problem that suggest that the given翻译 2016-10-13 10:57:34 · 8117 阅读 · 0 评论 -
动态规划之重叠子问题属性(Overlapping Subproblems Property)
Dynamic Programming is an algorithmic paradigm that solves a given complex problem by breaking it into subproblems and stores the results of subproblems to avoid computing the same results again. Foll翻译 2016-10-13 09:25:53 · 3849 阅读 · 0 评论 -
SQL删除表中的重复记录(多个字段),只留一条。
在一家韩国电商的面试中被问到了,当时一脸懵逼,没想法……回来想了想,还是有些思路的……唉……临场真是弱啊……第一步:查询重复记录SELECT * FROM TableNameWHERE RepeatFiled IN ( SELECT RepeatFiled FROM TableName GROUP BY RepeatFiled HAVING COUNT(RepeatFiled原创 2016-10-13 13:35:29 · 9827 阅读 · 1 评论 -
在数组中找出四个数字的和等于指定数字(4Sum)
Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.Note: The solution原创 2016-10-13 13:44:05 · 3058 阅读 · 0 评论 -
丑数
原文地址:Ugly Numbers一个数的因数只有2,3或者5这样的质数,那么这个数就被称为丑数(Ugly Numbers)。序列1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, …就是前11个丑数。为了方便,把1也包括进来了。写一个程序找出并打印第150个丑数。方法1(简单)算法循环所有的正整数,直到丑数的个数小于n,如果一个整数是丑数,那么就增加丑数数目。检查一下这个数字是翻译 2016-11-04 10:58:19 · 376 阅读 · 0 评论 -
可排列的最长公共子序列(Longest common subsequence with permutations allowed)
原文地址:Longest common subsequence with permutations allowed已知两个小写的字符串。找出这两个字符串排过序后的公共子序列,输出的结果必须是排过序的。例子:Input : str1 = "pink", str2 = "kite"Output : "ik" 字符串"ik"是最长的有序字符串,它的其中的一个排列是"ik",而且是"pink"的子序列翻译 2016-10-24 15:57:52 · 370 阅读 · 0 评论 -
动态规划之最长递增子序列(Longest Increasing Subsequence)
原文地址:http://www.geeksforgeeks.org/dynamic-programming-set-3-longest-increasing-subsequence/We have discussed Overlapping Subproblems and Optimal Substructure properties in Set 1 and Set 2respect翻译 2016-10-13 12:12:37 · 4012 阅读 · 0 评论 -
获取数组中K个最大元素(k largest(or smallest) elements in an array | added Min Heap method)
原文地址:http://www.geeksforgeeks.org/k-largestor-smallest-elements-in-an-array/Question: Write an efficient program for printing k largest elements in an array. Elements in array can be in any order.翻译 2016-10-13 19:49:59 · 914 阅读 · 0 评论 -
输出一个集合所有子集的元素和(Print sums of all subsets of a given set)
原文地址:http://www.geeksforgeeks.org/print-sums-subsets-given-set/Given an array of integers, print sums of all subsets in it. Output sums can be printed in any order.Input : arr[] = {2, 3}Outpu翻译 2016-10-14 15:22:02 · 1086 阅读 · 0 评论 -
动态规划之最长公共子序列(Longest Common Subsequence)
原文地址:Dynamic Programming | Set 4 (Longest Common Subsequence) 我们已经分别在第一篇、第二篇文章中讨论了重复的子问题与最优的子结构。我们也在第三篇文章中讨论了一个例子。下来我们讲一个最长公共子序列(LCS)作为本文用动态规划来解决的例子问题。LCS问题描述:已知两个序列,找到同时是两个序列且长度最长的子序列。一个子序列是指与一个序列有相同翻译 2016-10-15 16:14:42 · 875 阅读 · 0 评论 -
动态规划之编辑距离(Edit Distance)
原文地址:Dynamic Programming | Set 5 (Edit Distance) 已知两个字符串str1与str2,str1可以用下面的操作。得到最小的编辑数使得str1转变为str2。 a)insert b)remove c)replace 以上所有的操作成本是一样的。例子:Input: str1 = "geek", str2 = "gesek"Output: 1翻译 2016-10-15 20:51:41 · 1906 阅读 · 0 评论 -
迭代的快速排序(Iterative Quick Sort)
原文地址:Iterative Quick Sort 译者注:教科书中一般介绍的是递归的快速排序,当年在百度校招面试的时候被问到这个问题,没写出来,真是遗憾……下面是一种典型的递归的实现,用最后一个元素作为枢轴(pivot)/* A typical recursive C/C++ implementation of QuickSort *//* This function takes last e翻译 2016-10-16 10:12:21 · 5366 阅读 · 0 评论 -
快速排序最坏的情况啥时候出现?
原文地址:When does the worst case of Quicksort occur?这个答案还得看枢轴(pivot)的选择策略。在快速排序的早期版本中呢,最左面或者是最右面的那个元素被选为枢轴,那最坏的情况就会在下面的情况下发生啦:1)数组已经是正序(same order)排过序的。 2)数组已经是倒序排过序的。 3)所有的元素都相同(1、2的特殊情况)因为这些案例在用例中十分常见翻译 2016-10-16 10:42:42 · 43932 阅读 · 1 评论 -
第N个偶斐波那契数
原文地址:Nth Even Fibonacci Number 已知一个n,找到第n个偶斐波那契数。Input : n = 3Output : 34Input : n = 4Output : 144Input : n = 7Output : 10946下面的数字序列就是斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ….对于序列翻译 2016-11-06 14:36:03 · 565 阅读 · 0 评论 -
字符数目相同的子字符串的数目
原文地址:Count Substrings with equal number of 0s, 1s and 2s已知一个字符串,这个字符串只包含0,1,2,求子字符串的数目,这些子字符串包含有相同数目的0,1,2。例子:输入: str = “0102010”输出: 2解释: 子字符串str[2, 4] = “102” 与子字符串str[4, 6] = “201”有相同数目的0, 1和2输入:翻译 2016-11-07 00:06:26 · 1806 阅读 · 0 评论 -
算法分析之渐近分析(Asymptotic Analysis)
原文地址:Analysis of Algorithms | Set 1 (Asymptotic Analysis)为什么要做性能分析?这里呢有许多东西需要考虑,比如用户的友好度,模块化,安全性,以及可维护性等等。为啥就不考虑考虑性能呢?答案很简单,如果我们拥有了性能,那么上面提到的东西也就有了。所以性能就像货币一样,用它我们可以买到上面提到的所有东西。另外学习性能的原因就是——速度超有趣!对一个任务翻译 2016-10-25 21:33:26 · 10453 阅读 · 2 评论 -
给定链表中某个节点的指针,删除链表中的该节点
这个问题最初的想法就获得给点节点之前的节点的位置即可,但是这样做再仔细想想貌似意义不是很大,至少从面试的角度感觉到面试官不想从这个角度让面试者去考虑问题,所以这里又有一个投机取巧的办法。那就是节点中前后节点信息唯一区别的地方就是该节点的data域!!!!!哈哈,找到这个关键点那么问题就解决了,在给定指针的前提下直接删除后面节点,然后将后面节点的值赋给当前位置,大功告成!注:该源码是参考别人的。#in原创 2016-10-16 14:16:13 · 896 阅读 · 0 评论 -
锯齿转变(ZigZag Conversion)
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)P A H NA P L S I I原创 2016-10-12 22:44:49 · 678 阅读 · 0 评论 -
动态规划之硬币兑换(Coin Change)
原文地址:Dynamic Programming | Set 7 (Coin Change)已知N,如果我们想要换N分,而且每种S = { S1, S2, .. , Sm} 价值的硬币是不限数量的,那么我们有多少种方法来兑换?硬币的顺序是无所谓的。例如:N = 4,S = {1,2,3},,因此有四种答案: {1,1,1,1},{1,1,2},{2,2},{1,3}。所以输出应该是4。N = 10,翻译 2016-10-17 10:22:50 · 5280 阅读 · 0 评论 -
已知一个有重复字符的字符串,打印其所有不同的字符排列
原文地址:Print all distinct permutations of a given string with duplicates已知一个字符串,其中可能包括相同的字符。写一个函数打印这些字符的排列,但不能有重复的排列。例子:Input: str[] = "AB"Output: AB BAInput: str[] = "AA"Output: AAInput: str[] = "A翻译 2016-10-17 13:50:21 · 902 阅读 · 0 评论 -
所有整数对之间的位差异数之和(Sum of bit differences among all pairs)
原文地址:Sum of bit differences among all pairs 已知一个有n个整数的数组,找出数组中任意两个元素组成的整数的位差异数的和。例子:输入: arr[] = {1, 2} 输出: 4 数组中所有的整数对:(1, 1), (1, 2) (2, 1), (2, 2) 位差异数之和 = 0 + 2 + 2 + 0 = 4 输入: arr[] = {1, 3, 5}翻译 2016-10-17 18:41:28 · 411 阅读 · 0 评论 -
构建一个n×n的unique矩阵
原文地址:Construct a unique matrix n x n for an input n已知一个奇数n,根据下面的条件得到一个n×n大小的矩阵:每个元素是1到n之间的一个整数(包含1和n);在同一行,同一列没有相同的数字;所有的1必须距矩阵的中心任意可能的距离,对于一个奇数n,n×n的矩阵中心是cell ((n-1)/2, (n-1)/2)。输出:Input : n = 1翻译 2016-11-08 10:43:48 · 1436 阅读 · 0 评论 -
计算任意两个定点的最长路径
原文地址:Longest path between any pair of vertices已知一个城市连接图,它们之间是通过电缆连接的,这样的话任意两个城市之间都没有环路。我们需要在已知的这个城市图中找到两个城市之间最大长度的电缆。Input : n = 6 1 2 3 // Cable length from 1 to 2 (or 2 to 1) is 3翻译 2016-10-18 10:11:45 · 2622 阅读 · 0 评论 -
最小总距离点的最优位置
原文地址:Optimum location of point to minimize total distance已知一个点集合和一条直线ax+by+c = 0,我们要在直线上找到一个点,这个点到这个集合的每个点的距离和是最小的。例子:上图中直线x - y - 3 = 0的最优点是(2, -1),这个点与其他点的总距离是20.77,也就是最小的总距离啦。如果我们在这条直线的无线位置上取一个点,那么总翻译 2016-10-28 20:03:01 · 2406 阅读 · 0 评论 -
从N个不同数字中等概率取出M个数字(N>=M)
这个问题本身不难理解,但是关键的地方是理解等概率,还有一个隐性的条件,那就是不能重复取。所以初步的想法是用Rand()在[0,N]范围内生成M个随机数字,万一里面有重复数字,那这就不好玩了。为了避免重复数字,那咱就给他生成随机的偏移量呗,假如我们当前取到的数字是a[i],生成一个随机数字r,那么我们下一个取得数字就是a[i+r]。可是这种做法也有点小问题,假如还没取完,然后数据就越界了,咋办?你可能原创 2016-10-29 09:21:50 · 3823 阅读 · 0 评论 -
Island Perimeter
题目地址:https://leetcode.com/problems/island-perimeter/You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represents water. Grid cells are connected horizontally/v原创 2016-11-28 21:34:41 · 1016 阅读 · 0 评论 -
垃圾回收算法之标记-整理算法
标记-清除算法会使内存产生碎片,那么如何解决这个问题,很显然,清除以后再整理一下内存不就行了么。然而标记-整理算法不是简单滴整理一下内存。标记-整理(Mark-Compact)算法不直接对可回收对象进行清理,而是让所有可用的对象都向一端移动。然后直接清理掉边界意外的内存。很显然,整理这一下需要时间,所以与标记清除算法相比,这一步花费了不少时间,但从长远来看,这一步还是很有必要的。该算法可谓“道德高尚原创 2016-11-01 22:16:02 · 5254 阅读 · 0 评论 -
版本号比较(Compare two Version numbers)
原文地址:Compare two Version numbers版本号是用来识别软件产品状态的字符串,一个版本号看起来像a.b.c.d,这里的a,b等都是数字,所以版本号是数字用点分开的字符串。版本号一般是从最大到最小这么个层级表示的(这里a是最大的,d是最小的)。在这个问题中,我们已知两个版本号,然后我们通过比较得出哪个是最近的版本号(也就是说哪个版本号更小)。【译者注:这里貌似跟我没一般的版本号翻译 2016-11-01 16:54:00 · 2826 阅读 · 0 评论 -
动态规划之子集和问题
原文地址:Dynamic Programming | Set 25 (Subset Sum Problem)已知一个非负整数集,与sum的值,确定这个集合是否存在这样的子集,这个子集所有元素和等于sum。例子: set[] = {3, 34, 4, 12, 5, 2}, sum = 9输出: True //There is a subset (4, 5) with sum 9.设isSubSe翻译 2016-11-13 13:54:11 · 8157 阅读 · 0 评论 -
计算在已知字符串中所有回文子序列的数目
原文地址:Count All Palindromic Subsequence in a given String在已知的字符串中查找有多少个回文的子序列(没必要对相同的做区分)。注意空字符串不能看作是回文。例子:输入 : str = "abcd"输出 : 4解释 :- 回文子序列有 : "a" ,"b", "c" ,"d" 输入 : str = "aab"输出 : 4解释 :- 回文子序列有翻译 2016-11-17 17:50:12 · 2601 阅读 · 1 评论 -
Power of Three
题目地址:https://leetcode.com/problems/power-of-three/Given an integer, write a function to determine if it is a power of three.Follow up: Could you do it without using any loop / recursion? 判断一个数是不是3的幂。首原创 2016-12-10 18:55:45 · 177 阅读 · 0 评论 -
Power of Two
题目地址:https://leetcode.com/problems/power-of-two/Given an integer, write a function to determine if it is a power of two. 这次是判断一个数字是不是2的幂。好,假如一个数字是2的幂,那么它对应的2进制是长这样的:1000000000000就是最高位一个1,后面跟一堆0。如果把刚才这个原创 2016-12-10 19:08:44 · 256 阅读 · 0 评论 -
Power of Four
题目地址:https://leetcode.com/problems/power-of-four/Given an integer (signed 32 bits), write a function to check whether it is a power of 4.Example: Given num = 16, return true. Given num = 5, return fal原创 2016-12-10 21:21:16 · 214 阅读 · 0 评论 -
Add Strings
题目地址:https://leetcode.com/problems/add-strings/Given two non-negative numbers num1 and num2 represented as string, return the sum of num1 and num2.Note:The length of both num1 and num2 is < 5100.Both原创 2016-12-10 22:30:39 · 321 阅读 · 0 评论 -
Convert a Number to Hexadecimal
题目地址:https://leetcode.com/problems/convert-a-number-to-hexadecimal/Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s complement method is used.Note:All let原创 2016-12-10 23:59:10 · 342 阅读 · 0 评论 -
Binary Watch
题目地址:https://leetcode.com/problems/binary-watch/A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 LEDs on the bottom represent the minutes (0-59).Each LED represents a ze原创 2016-12-11 14:20:24 · 268 阅读 · 0 评论