算法学习之路
jalen_zh
目前就职于国内某互联网大厂,后端开发工程师一枚,感谢关注,交流可以私信哦
展开
-
LeetCode:Search Insert Position
继续刷题中。。。。废话少说,先上题目:Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.大概意思就是,给你一个已经排好序的数组,和原创 2017-03-05 19:51:02 · 241 阅读 · 0 评论 -
LeetCode:House Robber
problem:You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that ad原创 2017-05-28 16:35:17 · 333 阅读 · 0 评论 -
大数据量的算法面试题
第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法, 比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率最大 的几转载 2017-03-23 16:34:32 · 857 阅读 · 2 评论 -
一组无序的整数找出出现次数大于一半的数字
在看一个讲算法的视频公开课里看到了这个题目,当时脑子里想到的第一个算法就是先排序然后进行遍历,具体的做法就是先将这组整数快速排序,然后在进行遍历,总的时间复杂度就是O(nlgn),但是实际上这并不是最优算法解原创 2017-03-05 14:23:35 · 1435 阅读 · 0 评论 -
2018年网易校招内推编程题之彩色砖块
小易有一些彩色的砖块。每种颜色由一个大写字母表示。各个颜色砖块看起来都完全一样。现在有一个给定的字符串s,s中每个字符代表小易的某个砖块的颜色。小易想把他所有的砖块排成一行。如果最多存在一对不同颜色的相邻砖块,那么这行砖块就很漂亮的。请你帮助小易计算有多少种方式将他所有砖块排成漂亮的一行。(如果两种方式所对应的砖块颜色序列是相同的,那么认为这两种方式是一样的。)例如: s = "ABAB",那原创 2017-08-16 16:04:37 · 461 阅读 · 0 评论 -
2018年网易校招内推编程题之等差数列
如果一个数列S满足对于所有的合法的i,都有S[i + 1] = S[i] + d, 这里的d也可以是负数和零,我们就称数列S为等差数列。小易现在有一个长度为n的数列x,小易想把x变为一个等差数列。小易允许在数列上做交换任意两个位置的数值的操作,并且交换操作允许交换多次。但是有些数列通过交换还是不能变成等差数列,小易需要判别一个数列是否能通过交换操作变成等差数列 输入描述:输入包括两行,原创 2017-08-17 14:52:07 · 452 阅读 · 0 评论 -
寻找第k大数的N种解法
今天看算法分析是,看到一个这样的问题,就是在一堆数据中查找到第k个大的值。 名称是:设计一组N个数,确定其中第k个最大值,这是一个选择问题,当然,解决这个问题的方法很多,本人在网上搜索了一番,查找到以下的方式,决定很好,推荐给大家。 所谓“第(前)k大数问题”指的是在长度为n(n>=k)的乱序数组中S找出从大到小顺序的第(前)k个数的问题。 解转载 2017-08-10 12:42:32 · 1061 阅读 · 0 评论 -
2018年网易校招内推编程题之交错01串
如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如: "1","10101","0101010"都是交错01串。小易现在有一个01串s,小易想找出一个最长的连续子串,并且这个子串是一个交错01串。小易需要你帮帮忙求出最长的这样的子串的长度是多少。 输入描述:输入包括字符串s,s的长度length(1 ≤ length ≤ 50),字符串中只包含'0'原创 2017-08-17 17:40:37 · 892 阅读 · 0 评论 -
数组和链表的区别
数组:数组中的元素在内存上连续存放的,而且删除或者添加一个元素需要执行大量移动操作,效率是很低的。但是随机访问某个元素可以通过index访问,时间复杂度为O(1).数组是不允许动态定义大小,即我们在使用前必须先确定数组的大小。不能适应元素动态增减的情况,当增加元素的时候,可能数组的大小不够。链表:链表中的元素在内存上与数组是不一样的,链表中的每个元素的地址都是不连续的,相邻的元素都是通过指针联原创 2017-09-04 17:14:50 · 437 阅读 · 0 评论 -
C++ 快速排序算法
快速排序是一种很有效的排序算法,是一种不稳定的排序方法;在最坏情况下的复杂度为O(N^2),最好情况和平均情况下的复杂度均为O(NlgN),在所有的内部排序方法里面是最实用的一种,也是被称为最好的内部排序算法。 快排的实现基于分治法,基本思想就是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可以分别对这两部分利用递归记录继续进行排序原创 2017-03-15 20:29:25 · 459 阅读 · 0 评论 -
Fibonacci数列的递归与非递归实现算法详解
递归算法因为递归需要不断的调用自身,当n过大的时候,程序将会很慢效率不高,不推荐使用,关于递归实现算法,也很简单,很多教科书上都是这种解法。//递归算法long long Fibonacci(unsigned int n){ if (n == 0) return 0; if (n == 1) return 1; return Fibonacci(n - 1) + Fibonacc...原创 2017-05-06 17:52:59 · 2454 阅读 · 2 评论 -
编程之美 给定一个整数N,那么N的阶乘N!末尾有多少个0?
一开始我们拿到这个题目的时候,可能在想我们是不是需要把N!的结果算出了呢?那如果N的值很大,导致N!的结果溢出该怎么办呢?如果我们可以从“哪些数字相乘能得到10'这个角度来考虑,问题就变得简单的多了。实际上能被2整除的数出现的概率要比能被5整除的·数高很多,所以我们只需要求出5的个数就可以得到最后0的个数下面给出一种思路我觉得这种方法比较简单容易理解int ret=0;while(N)原创 2017-03-24 12:47:40 · 521 阅读 · 0 评论 -
LeetCode:Linked List Cycle
problem:一个链表,让你判断是不是一个环状关于这个问题,一种很常见的思路就是设置两个指针初始化为head头结点,然后让这两个指针分别按照1和2的速度遍历链表,如果是环状的话那么最后一定会相遇,也就是说最后两个指针会相等关于这个问题的算法也是很容易解决的,主要是细节问题,开始在写这个算法的时候,那个while的循环条件我写的是while(p->next&&q->next->next),原创 2017-04-26 19:03:30 · 282 阅读 · 0 评论 -
LeetCoe:Majority Element
Problem:Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.You may assume that the array is non-empty and the major原创 2017-05-06 14:59:46 · 423 阅读 · 0 评论 -
STL中map实现原理
一、vectorvector的数据安排以及操作方式,与array非常类似,两者唯一的区别是空间运用的灵活性,array是静态空间,一旦配置了就不能改变,如果你想要大一点的空间,就必须首先配置一块新空间,然后将原来的元素一一复制进来,再把原来的空间释放给系统。但是vector是动态空间,随着元素的增加,它的内部机制会自行扩充空间以容纳新元素,因此vector的运用对于内存的合理利用与运用的灵原创 2017-03-15 21:30:39 · 5499 阅读 · 0 评论 -
LeetCode:Implement strStr()
题目:Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.意思就是给定两个字符串,然后返回needle在haystack中第一次出现的索引,否则返回-1看到这道题目的时候,我们先考虑一般的情况,假设两个字符串都不为空,下面我来说一下我原创 2017-03-05 19:07:01 · 295 阅读 · 0 评论 -
三角形内部线性插值方法
今天晚上刚做完网易游戏笔试题,有一道是让求插值,无奈不会,特意从晚上找到了方法问题:在三角形的三个顶点具有3个不同颜色,如何通过插值计算出三角形中每个点的颜色?应用实例:高洛德着色使用3个顶点的颜色进行线性插值,结果如下图:解决方案:显然,无论是线性插值还是双线性插值的都无法解决这个问题。而 使用重心坐标则可以很好的解决这个问题。简单的来说,重心坐标就是子三转载 2017-03-20 21:10:29 · 9469 阅读 · 0 评论 -
Leetcode: Maximum Subarray
Problem:Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [-2,1,-3,4,-1,2,1,-5,4],the contiguous subarray [4,-1,2原创 2017-03-11 21:07:30 · 218 阅读 · 0 评论 -
二叉树遍历算法实现
一、基本概念每个结点最多有两棵子树,左子树和右子树,次序不可以颠倒。性质:1、非空二叉树的第n层上至多有2^(n-1)个元素。2、深度为h的二叉树至多有2^h-1个结点。满二叉树:所有终端都在同一层次,且非终端结点的度数为2。在满二叉树中若其深度为h,则其所包含的结点数必为2^h-1。完全二叉树:除了最大的层次即成为一颗满转载 2017-03-22 20:59:45 · 369 阅读 · 0 评论 -
笔试面试常考数据结构红黑树性质总结
红黑树一、定义红黑树是一种特定类型的二叉树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由RudolfBayer发明的,他称之为"对称二叉B树",它现代的名字是在LeoJ.Guibas和RobertSedgewick于1978年写的一篇论文中获得的。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的,它可以在O(logn)时间内做查找,原创 2017-03-29 18:03:33 · 3446 阅读 · 0 评论 -
鹰蛋问题解析之动态规划
一幢 100 层的大楼,给你两个鸡蛋。如果在第 n 层扔下鸡蛋,鸡蛋不碎,那么从第 n-1 层扔鸡蛋,都不碎。这两只鸡蛋一模一样,不碎的话可以扔无数次。最高从哪层楼扔下时鸡蛋不会碎?1. 如果有无数个蛋如果问题分为两问,第一问提出如果你鹰蛋有无数个,该如何求解?这个问题比较简单,只需要二分法就能在O(lgn)的次数内求解问题,问题的第二问是如果只有两个鹰蛋,该如何求解,我当转载 2017-03-25 18:41:41 · 1799 阅读 · 0 评论 -
LeetCode: Remove Duplicates from Sorted List
Problem:Given a sorted linked list, delete all duplicates such that each element appear only once.For example,Given 1->1->2, return 1->2.Given 1->1->2->3->3, return 1->2->3.问题的大概意思就是,给你一原创 2017-03-16 21:26:44 · 203 阅读 · 0 评论 -
LeetCode:Best Time to Buy and Sell Stock
problem:Say you have an array for which the ith element is the price of a given stock on day i.If you were only permitted to complete at most one transaction (ie, buy one and sell one share of原创 2017-04-03 13:53:41 · 446 阅读 · 0 评论 -
LeetCode:Min Stack
problem:Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.push(x) -- Push element x onto stack.pop() -- Removes the element on top of the stack.t原创 2017-04-28 15:34:05 · 330 阅读 · 0 评论 -
LeetCode: Intersection of Two Linked Lists
Problem:Write a program to find the node at which the intersection of two singly linked lists begins.For example, the following two linked lists:A: a1 → a2 ↘原创 2017-04-28 16:09:38 · 351 阅读 · 0 评论 -
判断一个含多种括号的字符串是否匹配正确 (如(([]))正确,[[(()错误)
public boolean isMatch(String str){ 2 Stack stack = new Stack(); 3 for(int i = 0; i i){ 4 char ch = str.charAt(i); 5 if(ch == '[' || ch == '原创 2017-05-03 15:25:17 · 664 阅读 · 0 评论 -
LeetCode:Two Sum II - Input array is sorted
Problem:Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.The function twoSum should return indices of th原创 2017-05-03 17:39:43 · 338 阅读 · 0 评论 -
面试百度新浪头条b站阿里的研发实习生面试记录
上周开始投简历,然后周四开始收到滴滴的面试通知,这是第一个面试通知,接着周五下午没课我就开始去图书馆复习,准备周一下午的面试,然后周五下午又收到百度面试通知,蛮开心的。因为一直觉得没有很好的学校,也没有出色的实习经历,也没有很高大上的项目,没有很大的信心。后来又去投了b站的简历,后来陆续收到面试邀请有头条、新浪、百度、盛大游戏、还有阿里巴巴,收到蛮多公司的面试邀请,我说句实话,蛮意外的。因为基本上...原创 2017-12-01 20:32:17 · 4404 阅读 · 5 评论