GLUTEN
白帽子hhh
这个作者很懒,什么都没留下…
展开
-
3*4的方格,有多少个长方形?
题目:3*4的方格,有多少个长方形?方法1:要构成一个矩形,需要4个点,横着2个,竖着2个,而3*4的方格,横着5个点竖着4个点,那么横竖各选2个点就会构成一个矩形:=60方法2:一行能构成的矩形是4+3+2+1,有三个单行,一共3*(4+3+2+1)两行能构成的矩形是4+3+2+1,有两个两行,一个2*(4+3+2+1)三行能构成的矩形是4+3+2+1,有一个三行,...原创 2019-03-20 12:42:20 · 13769 阅读 · 0 评论 -
恢复二叉搜索树
题目:二叉搜索树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。示例 1:输入: [1,3,null,null,2] 1 /3 \ 2输出: [3,1,null,null,2] 3 /1 \ 2示例 2:输入: [3,1,4,null,null,2] 3/ \1 4 / ...原创 2019-06-29 09:58:05 · 440 阅读 · 0 评论 -
求一个数组集合的子集
题目:求一个数组的所有子集。如int a[]={1,2,3}.其子集为有2^n=8 它们是:{},1,2,3,12,13,23,123分析:我们可以使用二进制位标记来做。子集中有某个字符用1标记,不存在用0标记,则:000 {}001 c011 bc100 a101 ac110 ab111 abc则我们可以遍历数值0...原创 2019-07-01 11:12:35 · 889 阅读 · 0 评论 -
最长上升子序列
题目:给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明: 可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n ...原创 2019-07-06 13:48:01 · 171 阅读 · 0 评论 -
两数相加
题目给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -&...原创 2019-07-06 15:36:40 · 138 阅读 · 0 评论 -
二叉树层序序列,输出它的镜像层序序列
二叉树的镜像输出指定二叉树的镜像输入描述以二叉树对应的完全二叉树为参照,空白节点处使用#字符填充,使用层次遍历表示二叉树,节点间使用空格分割,如427#369输出描述反转输入的二叉树,输出其镜像表示示例1输入427#369输出472963#说明输入输出采用层次遍历方式,空节点使用#标记填充为完全二叉树思路:先利用二叉树层序序列直...原创 2019-08-22 09:05:52 · 823 阅读 · 1 评论 -
两个线程,一个打印奇数,一个打印偶数
题目:实现两个线程,一个打印奇数,一个打印偶数思路(1):用c++11的互斥量mutex,条件变量condition_variable.一个全局变量i,控制每个线程获取互斥锁后执行一次,再通过条件变量唤醒另一个等在该锁上的线程,让其执行,即保证两个线程交替运行。#include <thread>#include <iostream>#include &l...原创 2019-08-22 11:42:16 · 2608 阅读 · 0 评论 -
c++11实现生产者消费者模型
1.生产者与消费者模型一个场所,两种角色,三种关系。(场所:线程安全的队列)2.优点解耦、支持忙闲不均、支持并发3.实现用到互斥锁,条件变量#include <thread> #include <mutex> #include <deque> #include <vector> #include <...原创 2019-08-29 20:06:01 · 606 阅读 · 0 评论 -
leetcode17. 电话号码的字母组合
题目:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].分析:深度优先-回溯class Solution {public: string m...原创 2019-08-31 16:21:11 · 282 阅读 · 0 评论 -
给一个回文正整数,找出第一个大于它的回文数
题目:给一个回文正整数,找出第一个大于它的回文数分析:先写一个判断一个数是不是回文数的函数,然后从这个数的下一个数开始判断,找一个离它最近并且大于它的回文数#include<map>#include<string>#include<iostream>using namespace std;//判断一个数是不是回文数bool Is_Rebac...原创 2019-08-31 21:16:23 · 947 阅读 · 0 评论 -
二维矩阵逆置
题目:求一个二维矩阵的逆置分析:a[i][j]与a[j][i]交换位置即可一层一层交换void re(vector<vector<int>>& vv){ int j = 0; int k = j;//记录列 for (int i = 0; i < vv.size(); i++) { for (; j < vv[i].size...原创 2019-09-01 08:41:27 · 1012 阅读 · 0 评论 -
最长上升子序列
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明: 可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗...原创 2019-09-01 09:34:24 · 160 阅读 · 0 评论 -
36进制数的加法运算
题目:36进制由0-9,a-z,共36个字符表示,最小为'0''0''9'对应十进制的09,'a''z'对应十进制的1035例如:'1b' 换算成10进制等于 1 * 36^1 + 11 * 36^0 = 36 + 11 = 47要求按照加法规则计算出任意两个36进制正整数的和如:按照加法规则,计算'1b' + '2x' = '48'要求:不允许把36进制数字整体转为10进制数字,...原创 2019-09-02 10:09:15 · 5040 阅读 · 1 评论 -
买卖股票的最佳时机
原题:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4] 输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。...原创 2019-09-02 12:28:01 · 170 阅读 · 0 评论 -
n*m方格中有多少个内切圆(正方形)?
1.设有一个n*m方格的棋盘(1≤m,n≤100)。求出该棋盘中包含多少个正方形、多少个长方形(不包括正方形)。求内切圆就是求正方形。//x=min(m,n)-1 //长方形里面数正方形的个数计算公式:m*n+(m-1)*(n-1)+.....+(m-x)*(n-x) // m*n表示长度为1的正方形的个数,(m-1)*(n-1)表示长度为2的正方形的个数。。。。。。//长...原创 2019-09-03 15:36:13 · 1615 阅读 · 0 评论 -
连续最大和
题目:一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3输入描述:输入为两行。 第一行一个整数n(1 <= n <= 100000),表示一共有n个元素 第二行为n个数,即每个元素,每个整数都在32位int范围内。以空格分隔。输出描述:所有连续子数组中和最大的值。分析:方法(1):动态...原创 2019-07-03 11:19:07 · 137 阅读 · 0 评论 -
字符串的排列
题目:题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。分析:递归的思想类似归纳思想,首先考虑递归一定要学会简化思维,不能想的太深,而是只考虑一个层次的变化;...原创 2019-06-07 08:12:35 · 408 阅读 · 0 评论 -
查询一个日志文件中访问次数最多前10个IP?
题目:查询一个日志文件中访问次数最多前10个IP?第一步:按照IP进行将记录排序。第二步:按照IP去重,并且显示重复次数第三步:按照次数升序排列第四步:显示前10行cat log.txt|awk -F" " '{print &1}' |sort|uniq -c|sort -nrt " "|awk -F" " 'print &2' |head -10...原创 2019-03-20 12:44:13 · 8237 阅读 · 0 评论 -
过桥问题
题目:小明一家过一座桥,过桥时是黑夜,所以必须有灯。现在小明过桥要1秒,小明的弟弟要3秒,小明的爸爸要6秒,小明的妈妈要8秒,小明的爷爷要12秒。每次此桥最多可过两人,而过桥的速度依过桥最慢者而定,而且灯在点燃后30秒就会熄灭。问:小明一家如何过桥?思路:这道题很多人往往认为应该由小明持灯来来去去,这样最节省时间,但最后却怎么也凑不出解决方案。实际上本题的关键是过桥慢的妈妈和爷爷应该一起...原创 2019-03-23 13:08:38 · 585 阅读 · 0 评论 -
有 n 种不同面值的硬币,每种硬币有无限多个。为了方便购物,他希望带尽量 少的硬币,但是要能组合出 1 到 m 之间的任意值。 //第一行为两个整数:m 和 n,他们的意义如题目描述。接下来的 n 行
题目:有 n 种不同面值的硬币,每种硬币有无限多个。为了方便购物,他希望带尽量 少的硬币,但是要能组合出 1 到 m 之间的任意值。第一行为两个整数:m 和 n,他们的意义如题目描述。接下来的 n 行,每行一个整数,第 i + 1 行的整数表示第 i 种硬币的面值最少需要携带的硬币数量,如果无解则输出-1。输入:20 41 2 5 10输出:5分析:sum表示当前能凑到的最大...原创 2019-04-06 16:48:33 · 5149 阅读 · 1 评论 -
穿越怪兽谷
题目:在怪兽谷依次会遇到N只怪兽,给出每只怪兽的武力值和贿赂这只怪兽的金币数。贿赂了某只怪兽,该怪兽就会护送我们继续前进;如果不贿赂某只怪兽,该怪兽武力值大于护送我们的怪兽武力值之和,那我们就会被怪兽打。要想成功穿越怪兽谷还不被怪兽打,最少需要准备多少金币?思路:第一个怪兽肯定是要收买的,因为第一次你没有任何武力值。然后判断第一个怪兽的武力值是否大于剩下所有怪兽的武力之和,如果大于,那么...原创 2019-04-06 21:22:55 · 490 阅读 · 9 评论 -
//给定一个仅包含0或1的字符串,现在可以对其进行一种操作,当有两个相邻的字符其中一个是0另外一个是1的时候 //可以消除这两个字符,这样的操作一直进行下去,直到找不到相邻的0和1为止,问这个字符串经
题目:给定一个仅包含0或1的字符串,现在可以对其进行一种操作,当有两个相邻的字符其中一个是0另外一个是1的时候可以消除这两个字符,这样的操作一直进行下去,直到找不到相邻的0和1为止,问这个字符串经历了操作以后的最短长度。int min_strlen(string& s){ int i = 0; while (i < (int)(s.size()-1)) { i...原创 2019-04-06 21:59:27 · 4790 阅读 · 0 评论 -
//输入一个数,判断0~这个数之间的数的二进制序列数回文串的数的个数 //回文串是无论正着读还是反着读都一样的字符串,比如"level"或者"noon"就是 //回文串。若将某个十进制的非负整数N,转
题目:输入一个数,判断0~这个数之间的数的二进制序列数回文串的数的个数回文串是无论正着读还是反着读都一样的字符串,比如"level"或者"noon"就是回文串。若将某个十进制的非负整数N,转换成二进制后得到的01序列具有回文的性质,则称该数为回文数,比如9的二进制是1001,“1001”就是具有回文串的性质则称9是回文数。先给一个十进制数N,请计算小于等于N的回文数的数量。分析:先得出一...原创 2019-04-12 20:43:49 · 463 阅读 · 0 评论 -
输入一个整数n,求n以内有多少个有限域。大小为q的有限域指的是q是 //某个素数p的方幂(即p^k==q,k>=1)。
题目:输入一个整数n,求n以内有多少个有限域。大小为q的有限域指的是q是某个素数p的方幂(即p^k==q,k>=1)。分析:即0~n之间的每一个数x有多个数满足:素数^k==x,x<=n,由于这里素数在变,k值也在变,那么我们可以找出n以内所有的素数,并且如果满足:素数^k<=n,那么这个数(素数^k)就是一个有限域。//找出n以内所有的素数(最小的素数是2)v...原创 2019-04-12 20:48:36 · 589 阅读 · 0 评论 -
找两个字符串的最长公共子串的最大长度
题目:找两个字符串的最长公共子串的最大长度分析:从较短的那个子串的长度串依次判断是不是长串的子串,即从将可能的最长公共子串开始比较,那么只要匹配到,一定是最长的子串。int max_common_str(const string& s1, const string& s2){ string longstr; string shortstr; if (s1.s...原创 2019-04-15 15:27:01 · 1415 阅读 · 0 评论 -
猫吃老鼠问题
题目1:5只猫5分钟捉5只老鼠 100分钟捉100只老鼠需要多少只猫?分析:5只猫5分钟捉5只老鼠,则1只猫5分钟捉1只老鼠,1只猫100分钟捉20只老鼠,则5只猫100分钟捉100只老鼠题目2:5只猫同时吃5只老鼠用5分钟,20只猫同时吃20只老鼠用多少分钟?分析:5只猫同时吃5只老鼠用5分钟,1只猫5分钟吃1只老鼠,20只猫5分钟吃20只老鼠...原创 2019-05-20 12:01:37 · 797 阅读 · 0 评论 -
一个IPV4的网络地址,通常可以划分为网络号和主机号,网络号相同的两台主机位于同一个子网,为了方便快速的确定一个地址所在的子网,我们通常需要提供一个IP地址的子网掩码,用这个子网掩码与给定的IPV4地
题目:一个IPV4的网络地址,通常可以划分为网络号和主机号,网络号相同的两台主机位于同一个子网,为了方便快速的确定一个地址所在的子网,我们通常需要提供一个IP地址的子网掩码,用这个子网掩码与给定的IPV4地址做按位与(&)得到的就是网络号:IP地址:172.18.155.33,子网掩码:255.255.0.0,网络号:172.18.0.0IP地址:172.18.155.33,...原创 2019-05-17 16:28:19 · 4245 阅读 · 1 评论 -
24进制转换为10进制
题目:有一个字符串形式表示的24进制数字M,需要转换成10进制数字N,M为无符号数字,可用32位整数存储,以字母0123456789abcdefghijklmn分别表示数字0-23分析:将24进制数的每一位按照乘以其对应的权值,最后将其加起来int reverse(string& s){ string table("0123456789abcdefghijklmn");...原创 2019-05-28 10:02:05 · 4240 阅读 · 0 评论 -
是否为合法的入栈序
题目:已知两个字母序列,一个是入栈序,一个是出栈序,把入栈序列按出现顺序压入一个栈,在入栈的任意过程中,允许栈中的字母出现,所有字母都是由大小写组成,并且不重复出现。现在需要判断已知的出栈序是不是合法的。分析:借助一个栈,根据入栈序和出栈序模拟给定过程,拿着入栈序看此时要不要出栈,如果全过程模拟完毕顺利(入栈序走完,并且栈为空)说明合法,否则说明不合法。//检查入队出队序列#...原创 2019-05-28 10:08:28 · 201 阅读 · 0 评论 -
完全二叉树节点数
题目:给定一棵完全二叉树的头节点head,返回这棵树的节点个数。如果完全二叉树的节点数为N,请实现时间复杂度低于O(N)的解法。方法(1):递归O(n)算法int nodeNum(struct TreeNode* head) { if(NULL == head) { return 0; } ...原创 2019-06-06 19:09:28 · 1916 阅读 · 0 评论 -
链表中环的入口结点
题目:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。分析:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public:...原创 2019-06-06 20:15:29 · 84 阅读 · 0 评论 -
两数之和
暴力法:class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { int i,j; for(i=0;i<nums.size()-1;i++) { for(j=...原创 2019-09-03 16:12:04 · 348 阅读 · 0 评论