算法
文章平均质量分 50
tjk922215
职业信息是对与职业有关的所有信息的统称,完整的职业信息包括职业资源信息、职业新闻信息、职业政策信息、职业测评信息等。
展开
-
LeetCode算法题目:Trapping Rain Water
题目: Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining. For example Given [0,1,0,2,1,0,1,3,2,原创 2017-03-18 11:12:13 · 320 阅读 · 0 评论 -
LeetCode算法题目:Pow(x, n)
题目: Implement pow(x, n).分析: 采用分治法: 比如,4的11次方,我们可以看做是4的5次方 乘以 4的五次方 乘以 4 这样问题就化简为2种情况 指数为单数时,结果= x的n/2次方 * x的n/2次方 * x; 指数为双数时,结果=x的n/2次方 * x的n/2次方 这样循环累乘的次数缩小了一半。代码:class Solution原创 2017-06-09 11:44:30 · 228 阅读 · 0 评论 -
8.12 K-生成树
问题:k-SPANNING TREE问题是这样的:输入:无向图G=(V, E) 输出:G的一个生成树,其中所有的节点度数都不超过k——如果该树存在。 请证明对任意k>=2: (a)k-生成树问题是一个搜索问题。 (b)k-生成树问题是NP-完全的。(提示:由k=2开始,考虑该问题与Rudrata路径问题的关联。)答:(a) k-生成树问题原创 2017-07-07 22:36:19 · 258 阅读 · 0 评论 -
课本8.8 证明
1.问题描述:在精确的4SAT问题中,输入为一组子句,每个子句都是恰好4个文字的析取,且每个变量最多在每个子句中出现一次。目标是求他的满足赋值,如果赋值存在,则证明4SAT是NP-完全问题。2.问题分析:可以从 已经知道3SAT问题规约到4SAT问题,则证明4SAT是NP-完全 问题。3.问题证明:对于 任意的3SAT问题 :c1={原创 2017-07-07 22:42:42 · 206 阅读 · 0 评论 -
剑指offer面试题目:第一个只出现一次的字符
题目 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。分析 方法一:简单粗暴O(n^2),一个显而易见的想法是像冒泡排序一样,采用两个循环,内层循环对外层判定元素arr[i]进行轮询,当发现arr[i] == arr[j]时,本次循环终止,显然,时间复杂度O(n^2),不使用额外空间。 方法二:上述做法虽然可行,不过O(n^2)的时间复杂度显然不理想原创 2017-07-30 09:41:13 · 224 阅读 · 0 评论 -
剑指offer面试题目:数组中的逆序对
题目 题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。例如,有一个数组为Array[0..n] 其中有元素a[i],a[j].如果 当i小于j时,a[i]>a[j],那么我们就称(a[i],a[j])为一个逆序对。在数组{7,5,6,4}中一共存在5对逆序对,分别是(7,6),(7,5),(7,4),(6,4),(5原创 2017-07-30 10:22:27 · 210 阅读 · 0 评论 -
剑指offer面试题目:两个链表的第一个公共节点
题目 输入两个链表,找出它们的第一个公共结点。分析 这个问题一种常想到的方法就是两层循环遍历,外层循环遍历链表A,对A中每个节点,遍历链表B,如果在B中找到,说明这个节点是第一个公共节点,但是这样的方法时间复杂为mn,一般是不允采用的。 所以我们需要分析更深层次的问题,找到其中的规律,我们如果动手画一下一般的链表图就能够发现两个链表的第一个公共节点之后的样子一定是如下表示(由此可以发原创 2017-07-30 10:46:26 · 309 阅读 · 0 评论 -
剑指offer面试题目:数字在排序数组中出现的次数
题目 统计一个数字在排序数组中出现的次数。例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3由于3在这个数组中出现了4次,因此输出4。分析 题目解法很多,关键是要找到让人满意的方法,直接统计当然可以,可是显然不是我们要的答案。 比较好的思路如下: 使用二分查找的拓展,当查找的元素有重复的时,找到元素的第一个和最后一个。这样将可以计算出该元素有多少个重复的了。二分法在数原创 2017-07-30 17:30:40 · 312 阅读 · 2 评论 -
剑指offer面试题目:数组中只出现一次的数字
题目 一个整型数组里除了一个数字之外,其它的数字都出现了两次。请写程序找出这个只出现一次的数字。 要求时间复杂度是O(n),空间复杂度是O(1)。分析 由于题目要求时间复杂度为O(n),所以先排序然后比较相邻数字是否相同的思路被排除。 空间复杂度是O(1),辅助空间被限制,所以hash表的思路也被排除。 那么这个题的突破口在哪里呢?注意这个数组的特殊性:其它数字都出现了原创 2017-07-30 21:58:01 · 211 阅读 · 0 评论 -
LeetCode算法题目:Course Schedule
题目:There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a原创 2017-06-24 18:19:20 · 239 阅读 · 0 评论 -
LeetCode算法题目:Edit Distance
题目: Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.) You have the following 3 operations permitted on a原创 2017-06-23 09:35:00 · 285 阅读 · 0 评论 -
LeetCode算法题目:Subsets AND Subsets II
题目: Given a set of distinct integers, nums, return all possible subsets. Note: The solution set must not contain duplicate subsets. For example, If nums = [1,2,3], a solution is: [原创 2017-05-08 19:14:35 · 218 阅读 · 0 评论 -
Leetcode算法题目:Rotate Image
题目: You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). Follow up: Could you do this in-place?思路: 首先想到,模拟旋转操作,但是这样太过复杂,效率不高。 如下图,可以先将图片沿原创 2017-05-27 15:33:55 · 206 阅读 · 0 评论 -
LeetCode算法题目:Next Permutation
题目: Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers. If such arrangement is not possible, it must rearrange it as the lowest pos原创 2017-05-09 11:12:43 · 300 阅读 · 0 评论 -
LeetCode算法题目:Permutations
题目: Given a collection of distinct numbers, return all possible permutations. For example, [1,2,3] have the following permutations: [ [1,2,3], [1,3,2], [2,1,3],原创 2017-05-09 19:43:30 · 296 阅读 · 0 评论 -
LeetCode算法题目:Combinations
题目: Given two integers n and k, return all possible combinations of k numbers out of 1 … n. For example, If n = 4 and k = 2, a solution is: [ [2,4], [3,4], [2,3],原创 2017-05-10 10:30:28 · 310 阅读 · 0 评论 -
Leetcode算法题目:N-Queens
题目: The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other. Given an integer n, return all distinct solutions to the n-queens puzzle.原创 2017-06-01 14:23:49 · 205 阅读 · 0 评论 -
LeetCode算法题目:Sort Colors
题目: Given an array with n objects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the order red, white and blue. Here, we will use the inte原创 2017-05-21 15:46:27 · 267 阅读 · 0 评论 -
LeetCode算法题目:Longest Consecutive Sequence
题目:Given an unsorted array of integers, find the length of the longest consecutive elements sequence. For example, Given [100, 4, 200, 1, 3, 2], The longest consecutive elements sequence is [1,原创 2017-03-13 11:49:27 · 344 阅读 · 0 评论 -
二叉树遍历
#include<stdio.h>#include<stdlib.h>#include<queue>using namespace std;typedef int datatype;typedef struct node{ datatype data; struct node *lchild,*rchild; }bintnode;typedef bintnode *b原创 2017-07-21 17:59:31 · 181 阅读 · 0 评论 -
剑指offer面试题目:和为 s 的两个数字
题目 输入一个递增排序的数组和一个数字 s,在数组中查找两个数,得它们的和正好是 s。如果有多对数字的和等于 s,输出任意一对即可。 例如:输入数组{1 、2 、4、7 、11 、15 }和数字 15。由于 4+11 = 15 ,因此输出 4 和 11 。 分析 我们先在数组中选择两个数字,如果它们的和等于输入的 s,我们就找到了要找的两个数字。如果和小于 s 呢?原创 2017-07-31 10:31:28 · 161 阅读 · 0 评论 -
剑指offer面试题目:把数组排成最小的数
题目 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 输入 输入可能包含多个测试样例。 对于每个测试案例,输入的第一行为一个整数m (1<=m <=100)代表输入的正整数的个数。 输入的第二行包括m个正整数,其中每个正整数不超过1000000原创 2017-07-28 10:02:24 · 290 阅读 · 0 评论 -
剑指offer面试题目:丑数
题目 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 输入: 输入包括一个整数N(1<=N<=1500)。 输出: 可能有多组测试数据,对于每组数据, 输出第N个丑数。思路方法一: 最简单的思路是,从1开始验证每一个原创 2017-07-28 11:36:40 · 580 阅读 · 0 评论 -
腾讯2017秋招笔试编程
第一题编码 假定一种编码的编码范围是a ~ y的25个字母,从1位到4位的编码,如果我们把该编码按字典序排序,形成一个数组如下: a, aa, aaa, aaaa, aaab, aaac, … …, b, ba, baa, baaa, baab, baac … …, yyyw, yyyx, yyyy 其中a的Index为0,aa的Index为1,aaa的Index为2,以此类推。 编写一个函数,原创 2017-09-03 22:51:33 · 477 阅读 · 0 评论 -
搜狐2016研发工程师编程试题
第一题:马戏团题目 搜狐员工小王最近利用假期在外地旅游,在某个小镇碰到一个马戏团表演,精彩的表演结束后发现团长正和大伙在帐篷前激烈讨论,小王打听了下了解到, 马戏团正打算出一个新节目“最高罗汉塔”,即马戏团员叠罗汉表演。考虑到安全因素,要求叠罗汉过程中,站在某个人肩上的人应该既比自己矮又比自己瘦,或相等。 团长想要本次节目中的罗汉塔叠的最高,由于人数众多,正在头疼如何安排人员的问题。小王觉得这个原创 2017-08-27 22:59:45 · 403 阅读 · 0 评论 -
搜狐2017秋招研发工程师笔试题目
第一题:保留最大的数字题目 给定一个十进制的正整数number,选择从里面去掉一部分数字,希望保留下来的数字组成的正整数最大。 输入描述: 输入为两行内容,第一行是正整数number,1 ≤ length(number) ≤ 1000。第二行是希望去掉的数字数量cnt 1 ≤ cnt < length(number)。 输出描述:原创 2017-08-28 15:47:08 · 953 阅读 · 0 评论 -
搜狐2018研发工程师秋招笔试题
题目 有一间工厂生产的东西, 被包装在相同高度h 的正方形容器内, 但其面积大小分别有:1*1, 2*2, 3*3, 4*4, 5*5, 6*6等六种尺寸。这些产品总是用高度为h,面积为6*6的箱子打包后寄给客户。因为成本关系,当然希望将客户所订购的产品放在最少的箱子里寄出。请你写一个程式找出寄送这些产品最少需要多少个箱子,这可以使工厂节省下不少钱.思路 简单的暴力贪心算法,对不同的产品有原创 2017-08-29 09:40:12 · 516 阅读 · 0 评论 -
华为2016校园招聘上机笔试题
第一题:最高分是多少?题目 老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩. 输入描述: 输入包括多组测试数据。 每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目。 学生ID编号从1编到N。 第二行包含N个整数,代表这N个学生的初始成绩原创 2017-08-30 15:12:46 · 1615 阅读 · 0 评论 -
LeetCode算法题目:Gas Station
题目: There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from station原创 2017-03-22 16:42:01 · 241 阅读 · 0 评论 -
LeetCode算法题目:Number of Digit One
题目:Number of Digit One Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n. For example: Given n = 13, Return 6, b原创 2017-07-27 15:30:42 · 190 阅读 · 0 评论 -
ThreadPool用法与优势
引言 合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。线程池的使用线程原创 2017-08-10 16:46:04 · 239 阅读 · 0 评论 -
剑指offer:和为 s 的连续正数序列
题目 输入一个正数 s,打印出所有和为 s 的连续正数序列(至少两个数)。 例如输入 15,由于 1+2+3+4+5=4+5+6=7+8=15,所以结果打出 3 个连续序列 1~5、4~6 和 7~8。 分析 考虑用两个数 small 和 big 分别表示序列的最小值和最大值。首先把 small 初始化为 1,big 初始化为 2。如果从 small 到 big 的原创 2017-07-31 10:35:37 · 174 阅读 · 0 评论 -
剑指offer面试题目:翻转单词顺序
题目 题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。 为简单起见,标点符号和普通字母一样处理。 例如输入“I am a student.”,则输出“student. a am I”。 分析 此题较为简单,可以设一个临时变量,然后从头开始扫描句子,以此把每个单词存到临时变量中,然后把变量存到字符串中,再把下一个单词原创 2017-07-31 15:02:59 · 199 阅读 · 0 评论 -
剑指offer面试题目:扑克牌中的顺子
题目 随机抽取扑克牌中的5张牌,判断是不是顺子,即这5张牌是不是连续的。其中A看成1,J看成11,Q看成12,K看成13,大小王可以看成任何需要的数字。分析 :这道题的意思很明确,我们玩扑克的过程中,也经常碰到这样的情况。我们先看看在现实生活中,我们是怎么样处理的,我想大部分人都是这样做的:先把5张牌从小到大进行排序,然后直接判断。而如果碰到大小王,我们会除去大小王之后排序,然后判断不相邻原创 2017-07-31 20:46:27 · 429 阅读 · 0 评论 -
剑指offer面试题目:圆圈中最后剩下的数字(约瑟夫环)
题目 0,1,…n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字,求出这个圆圈里剩下的最后一个数字。分析 环形链表模拟圆圈 创建一个n个节点的环形链表,然后每次在这个链表中删除第m个节点; 可以用std::list来模拟环形链表,list本身不是环形结构,因此每当迭代器扫描到链表末尾的时候,需要将迭代器移到链表的头部。 分析每次被删除的数字的规律,原创 2017-07-31 21:52:57 · 295 阅读 · 0 评论 -
两个栈实现队列 两个队列实现栈
为说明思想,假设队列、栈都很大,不会出现满的情况。1.两个栈实现队列//前提已知:struct Stack{ int top; //栈顶指针 int stacksize;//栈的大小 int *s; //栈底指针};void InitStack(Stack *s);void Push(Stack *s, int k);int Pop(*s);原创 2017-07-19 15:13:59 · 291 阅读 · 0 评论 -
剑指offer面试题目:不用加减乘除做加法
题目 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。分析 首先看十进制是如何做的: 5+7=12,三步走 第一步:相加各位的值,不算进位,得到2。 第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最终结果。 第三步:重复上述两步,只是相加的值变成上述两步的得到的结果2和10,得到12。 同样我们可以原创 2017-08-01 10:37:12 · 210 阅读 · 0 评论 -
剑指offer面试题目:不能被继承的类
题目 用C++写一个不能被继承的类,且能正常使用。分析 首先,不能被继承的类,也就是它的子类继承它后不能正常的实例化。其实,如果能考虑到这里,就很简单了:子类需要实例化父类,将父类的构造函数设为private,子类就无法实例化了。再进一步,子类的析构函数需要调用父类的析构函数,所以将父类的析构函数设为private也能解决我们的问题。 问题的后半句将难度提升了两个数量级:且能正常原创 2017-08-01 14:13:48 · 223 阅读 · 0 评论 -
之字形(Zigzag)遍历/打印/提取矩阵元素算法
题目: 输入一个M*N的矩阵,按之字形将矩阵元素提取/打印出来。 分析: 容易知道,对角线方向的行数(如<1,2>、<5,4,3>)为M+N,由于元素在对角线方向的奇数行和偶数行增大的方向正好相反,可由此入手,用一个变量s(0<s<M+N)记录对角线行数的序号,在奇偶行上分别控制序列移动和边界条件。需要注意的是到达对角线行终点后元素的移动方向,有两种情况——向下和向右,此处边界条件的原创 2017-08-17 09:47:09 · 1146 阅读 · 1 评论 -
LeetCode算法题目:Search a 2D Matrix II
题目: Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties: Integers in each row are sorted in ascending from left to right. Integer原创 2017-05-07 16:05:34 · 225 阅读 · 0 评论