算法题

以下是为您整理出来关于【算法题】合集内容,如果觉得还不错,请帮忙转发推荐。

【算法题】技术教程文章

笔试算法题(09):查找指定和值的两个数 & 构造BST镜像树【代码】【图】

出题:输入一个已经升序排序的数组和一个数字;要求在数组中查找两个数,这两个数的和正好等于输入的那个数字,输出任意一对数字就可以,要求时间复杂度是O(n);分析:对于升序排序的数组{…i…j…k…m……},只有可能是i+m=j+k(j和k可能是同一个数),所以可以从两边往中间收缩而忽视其他交叉相加的情况;解题: 1void FindSumFactor(int *array, int length, int sum) {2int left=0, right=length-1;3while(true) {4/**5 ...

《剑指offer》算法题第二天【代码】

今日题目(分别对应剑指书3~9题):数组中重复的数字二维数组中的查找替换空格从尾到头打印链表重建二叉树二叉树的下一个节点用两个栈实现队列今日重点为1,2,5,6,后面会有详细的思路解析,现在先来简单地提一下其他题目:3. 替换空格:题目将一个句子中的空格转化为“%20”,为使时间复杂度达到O(n),采用从后往前遍历字符串的方法,即先遍历一遍字符串记录空格的个数,以此计算出转化完之后字符串新的长度,重新设定字符串长度之...

【算法题】字符串单词拆分【代码】

题目:给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"] 输出: true 解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。 示例 2:输入: s = "applepenapple", wordDict = ["apple", "pen"] 输出: true 解释:...

JS基础算法题(二)【代码】

1.1 数组去重的五种方法数组去重:将数组中重复的元素去掉JS数组没有删除具体元素的删除(只能删掉值,删不掉元素的索引),可以使用另外一个结构来进行存储新数组新对象JS数组虽然本质可以删除第一个和最后一个元素,可以利用这一特性,交换当前重复的元素到最后,然后进行删除(pop() 或者length--)<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-s...

面试所遇到的两个算法题【代码】

题目1:写一段代码,求出数列{1,2,2,3,3,3,4,4,4,4,5,5,5,5...n},第169的数字,n的大小为10^18,比如输入169:输出的数为18思考:数列的规律是到几,这个数字就出现几次,所以可以采用循环输入数列,求169的数字,可以用求数组下标的方式来获得,以下是代码public static void main(String[] args) {long l = 1; //使用双循环写出这个数列,将数列的值添加进集合里ArrayList list = new ArrayList();for (; l < Math.pow(10,18); l+...

算法题——翻转链表中的一段【代码】

题目:给出一个链表中的两个指针p1和p2,将其之间的结点翻转。 思路:可以通过交换结点内的值来实现结点的翻转,空间为O(N);如果要求不能交换值,那么仅凭p1和p2是无法翻转的,只能交换两个指针之间的链表。 代码:交换值: 1struct ListNode 2{3int val;4 ListNode *next;5};6 7void reverseNodes(ListNode *p1, ListNode *p2) {8if ( p1 == NULL || p2 == NULL ) 9return; 1011 vector<ListNode*> nodes; 12for(vector<...

刷算法题学到的一些思考问题的方式(动态更新)

1、看解的性质,然后构造解,遍历所有可能的解,找出最优http://blog.csdn.net/u011026968/article/details/46282001原文:http://blog.csdn.net/u011026968/article/details/46282241

笔试算法题(21):将stack内外颠倒 & 判断扑克牌顺子【代码】【图】

出题:要求用递归将一个栈结构的元素内外颠倒;分析:本题再次说明系统栈是程序员最好的帮手,但递归度较高所以时间复杂度较大,可以使用空间换时间的方法(额外数组保存栈元素,然后逆向压入);第一层递归(清空栈元素,并使用系统栈保存):[1,2,3,4,5],栈顶元素为1,将1弹出之后,递归处理[2,3,4,5];第二层递归(将栈顶元素插入到栈底,同样使用系统栈保存):当[2,3,4,5]已经逆序之后,需要将1插入到栈底,所以将1作为参数传...

【趣味算法题】在数组中,对于所有元素,找出比当前元素大的下一个元素【代码】

在数组中,对于所有元素,找出比当前元素大的下一个元素意思就是,eg. 数组为     3 1 2 5 4 6 7那么我们需要得到的结果应该是 5 2 5 6 6 7 -1 解决方法如下: 暴力匹配: O (n ^ 2 ) 的效率对所有元素匹配过去,效率非常的低经过提示, 我想到的一种 O ( nlg n ) 效率的算法  只需要对数组扫描一次,我们用一个 Priority_queue 来得到当前最小的元素  Prority_queue 存放的数据结构为:struct sc {int key, flag;bool o...

一天一道算法题---6.11---大数阶乘

感谢微信平台----一天一道算法题----每天多一点进步 大数的概念 感觉是我接触acm 1 2 个月之后才有的....64位的Long long 和 __int64 也大概都是那时候才有的..大数 相加 相乘 相除 求余 相减不知道 有没有。。。都是应该要掌握的..可能 我也会陆续把上面的全慢慢贴上来// 呆会就直接把 微信提供的代码给贴上来了 先要去次午饭了 早饭 午饭永远是连一起的 ..........// 刚刚碰到个最小生成树的题 第一次用了邻接表去做 蛮cool ==...