数据结构/算法/刷题
文章平均质量分 61
别说话写代码
这个作者很懒,什么都没留下…
展开
-
Idea刷leetcode插件
1.安装在 IDEA(2019)的 setting 的 Plugins 的 Marketplace 中搜索 leetcode,即可以找到该插件,安装完成了,重启即可728 x 509 1015 x 7092.配置1、重启完成后,第一次使用的时候,需要一些基本的配制,在 setting 中的 Tools 中可以找到该插件工具,为 leetcode plugin,在里面,可以选择访问的为国际的 LeetCode 还是国内的,以及何种语言,同时,输入自己账户名(LoginName)和密码(Pa转载 2021-03-08 09:25:09 · 1276 阅读 · 0 评论 -
c/c++实现堆排序
/// /// @file heapSort.cc /// @author guoleida(496919313@qq.com) /// @date 2017-08-02 14:57:43 ///#include #include using std::cout;using std::endl;using std::string;template class原创 2017-08-02 21:18:38 · 222 阅读 · 0 评论 -
剑指offer 面试题20:表示数值的字符串
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。可以用A[.[B]][e|EC]或者.B[e|EC]表示,其原创 2018-11-15 16:42:47 · 149 阅读 · 0 评论 -
剑指offer 面试题19:正则表达式匹配
请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配class Solution {public: bool matchcore(char ...原创 2018-11-15 16:53:42 · 244 阅读 · 0 评论 -
剑指offer 面试题50:字符流中第一个只出现一次的字符
题目描述:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。解法: 使用哈希表occurance[256] ; 初始化occurance为-1,当遇到某个字符并且字符的occurance[ch]==-1时候,将其置为字符出现的位置i...原创 2018-11-15 18:10:42 · 514 阅读 · 0 评论 -
剑指offer 面试题23:链表中环的入口节点
题目:一个链表中包含环,请找出该链表的环的入口结点。解法:1.使用哈希表,遍历整个链表,并将链表结点存入哈希表中(这里我们使用容器set),如果遍历到某个链表结点已经在set中,那么该点即为环的入口结点2.如果链表存在环,我们无需计算环的长度n,只需在相遇时,让一个指针在相遇点出发,另一个指针在链表首部出发,然后两个指针一次走一步,当它们相遇时,就是环的入口处。法一:clas...原创 2018-11-15 20:22:30 · 242 阅读 · 0 评论 -
字符移动,大写字母后移且保持相对位置不变、调整顺序奇数位于偶数之前
题目:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。分别转自:https://blog.csdn.net/z174432/article/details/79815088https://blog.csdn.net/inite/article/details/79634900https://blog.csdn.net/weixin_401498...转载 2018-09-07 19:50:35 · 1048 阅读 · 0 评论 -
剑指offer 面试题57:和为s的两个数字vs和为s的连续正数序列 c++
题目:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。思路:两个 指针,start从前往后遍历,end从后往前遍历,如果当前前后之和大于s,end--,如果当前前后之和小于s,start++,这样能找出乘积最小的和为s的两个数class Solution {public: vector<int...原创 2018-11-21 10:12:43 · 260 阅读 · 0 评论 -
剑指offer 面试题42:左旋转字符串vs翻转单词顺序 c++
题目:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!思路:通过旋转, 比如题目中S=”abcXYZdef”,第一次全部旋转S="fedZYXcba",第...原创 2018-11-21 11:20:41 · 259 阅读 · 0 评论 -
剑指offer 面试题18:删除链表中的重复节点 c++
本题有两种第一题:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->3->4->5 ( 只是去掉了重复节点)思路:两个指针 一前一后,若前后相等,删掉后面的class Solution {public...原创 2018-11-19 16:29:07 · 1182 阅读 · 4 评论 -
剑指offer 面试题49:丑数
题目:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路:用一个数组,三个指针,index2,index3和index5,给每个元素乘以2,3,5看哪个刚好比当前nextindex位置的元素大,就放进来class Solution {public:...原创 2018-11-19 16:34:44 · 198 阅读 · 0 评论 -
剑指offer 面试题28:对称的二叉树 c++
题目:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。(要想象一下他的结构)思路:递归判断,左子树的左子树和右子树的右子树比较,左子树的右子树和右子树的左子树比较,若相等则是,否则不是。class Solution {public: bool isSym(TreeNode* left,TreeNode *right)...原创 2018-11-19 16:55:28 · 221 阅读 · 0 评论 -
剑指offer 面试题56:数组中只出现一次的数字
题目:在一个整数数组中,除了一个数之外,其他的数出现的次数都是两次,求出现一次的数,要求时间复杂度尽可能的小。例如数组{1,2,2,3,3,6,6},出现一次的数是1.思路:用 异或操作,相同为0相异为1,对所有元素异或然后得到的 结果就是要求的唯一一个只出现一次的数字int getonlyone(vector<int> data){ int k=0; fo...原创 2018-11-22 23:40:47 · 228 阅读 · 0 评论 -
剑指offer 面试题8:二叉树的下一个节点 c++
题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解析:三种情况:1.若节点有右子树,中序下一个就是 右子树最左孩子节点 2.若无右子树,且当前节点是父节点的左子节点,下一个就是父节点 3.无右子树,且当前节点是父节点的右子节点,那下一个就是 父节点的父节点,一直往上找, 一直找到根,说明当时节点是...原创 2018-11-20 12:47:25 · 499 阅读 · 0 评论 -
剑指offer 面试题35:复杂链表的复制 三种解法 c++
题目:请实现函数ComplexListNode* Clone(ComplexListNode* pHead),复制一个复杂链表。在复杂链表中,每个结点除了有一个pNext指针指向下一个结点之外,还有一个pSibling指向链表中的任意结点或者NULL。结点的定义如下:struct ComplexListNode{ int label; ComplexListNode* pNe...原创 2018-11-23 13:02:22 · 1759 阅读 · 0 评论 -
剑指offer 面试题43:整数中1出现的次数(1~n整数中1出现的次数)
题目:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。思路:参考https://blog.csdn.net/yi_afly/art...原创 2018-11-23 14:32:08 · 365 阅读 · 0 评论 -
剑指offer 面试题54:二叉搜索树的第k大节点
题目:给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。思路:二叉 搜索树的中序遍历是有序的,意思是找第k个数/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeN...原创 2018-11-23 15:27:13 · 338 阅读 · 0 评论 -
剑指offer 面试题41:数据流中的中位数 c++
题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。思路:数据流的中位数最好使用两个堆,这样可以动态维护插入和获得中位数的过程。可以使用一个大顶堆和一个小顶堆, 中位数左边是 大顶堆,放比中位数小的元素,中位数右边放小顶堆,放比中位数大的元素。如果当前...原创 2018-11-29 12:46:46 · 991 阅读 · 0 评论 -
剑指offer 面试题61:扑克牌中的顺子 c++
题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而 大小王可以看成 任意数字思路:以大小王为0,0可以代替任何数字。先对序列进行排序,然后算数组中0的个数,计算数组空缺 总数,如果空缺总数大于0的个数,不是顺子,否则是顺子。注意如果5张牌发现有 对子,肯定不是顺子class Solution {publ...原创 2018-11-25 14:44:36 · 1030 阅读 · 0 评论 -
剑指offer 面试题37:序列化二叉树 c++
题目:请实现两个函数,分别用来序列化和反序列化二叉树。思路:用dfs的思想,用前序遍历来序列化和反序列化二叉树参考思路:https://blog.csdn.net/u011475210/article/details/78889876(1)用vector,不用考虑逗号操作(2)用string(3)用stringstream,代码更加简洁 基于vector代码 如下...原创 2018-11-29 15:16:02 · 1043 阅读 · 3 评论 -
剑指offer 面试题:二叉树打印多行(BFS) c++
题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思路:用bfs,借助队列操作。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), ri...原创 2018-11-29 15:58:21 · 167 阅读 · 0 评论 -
剑指offer 面试题:之字形打印二叉树(BFS) c++
题目:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路:与 上一题分行打印二叉树https://blog.csdn.net/qq_21997625/article/details/84634299 一样。不过多了个标志位。用bfs,然后逐行打印,设个标志flag翻转/*struct ...原创 2018-11-29 16:57:56 · 224 阅读 · 0 评论 -
剑指offer 面试题14:剪绳子(动态规划dp,贪婪) c++
题目:给定一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]* k[1] * … *k[m]可能的最大乘积是多少?例如,当绳子 的长度为8时,我们把它剪成长度分别为2,3,3的三段,得到的长度最大乘积是 18.思路:(1)动态规划dp,f(n)=max(f(i)*f(n-i)),当绳子长度为...原创 2018-11-29 20:46:51 · 810 阅读 · 0 评论 -
剑指offer 面试题12:矩阵中的路径(回溯法)c++
题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵...原创 2018-11-29 21:26:26 · 467 阅读 · 0 评论 -
剑指offer 面试题13:机器人的运动范围(回溯法)c++
题目:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?思路:(回溯法)可以 前后左右遍历路径,查看可...原创 2018-11-29 21:49:31 · 439 阅读 · 0 评论 -
剑指offer 面试题65:不用加减乘除做加法 c++
题目:写一个函数求 两个整数之和, 要求在函数体内 不得使用“+”,“-”,“*”,“/”四则远算符号。思路:首先想到用位运算代替。分为3步,第一步让两个数字加起来不进位,可以使用异或运算,相同为0 相异 为1,第二步计算两个数字加起来的进位,可以用与操作然后左移 一位,因为进位只能由两个1加起来产生,所以使用与,然后左移。第三步 重复前面两步 直到不产生进位为止。class Solut...原创 2018-11-26 19:54:11 · 252 阅读 · 0 评论 -
剑指offer 面试题66:构建乘积数组 c++
题目:给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。思路:(1)暴力循环,复杂度为O(n^2) (2)构建前向乘积数组C[i] = A[0]*A[1]*...*A[i-1],即C[i]=C[i-1]*A[i-1];构建后向乘积数组D[i]...原创 2018-11-26 20:36:15 · 454 阅读 · 0 评论 -
剑指offer 面试题:字符串转整数 c++
题目:将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。思路:如果要写bugfree,就要判断空指针,空字符串,正负号,溢出等。这里在线编程只需要通过编译即可class Solution {public: int St...原创 2018-11-27 09:47:49 · 252 阅读 · 0 评论 -
剑指offer 面试题64:求1+2+3+...+n c++
题目:求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。解析:多种方法(1)利用构造函数求解 (2)利用虚函数求解 (3)利用函数指针求解 (4)利用模板类型求解这里可以通过递归的方式进行计算,但是很疑问的地方在于如何结束递归。这里可以有多种的方式,基本方向是采用逻辑与或的方式来计算,与的时...原创 2018-11-27 13:23:23 · 729 阅读 · 0 评论 -
剑指offer 面试题59:队列最大值 滑动窗口最大值 c++
题目:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1...原创 2018-11-27 15:22:02 · 549 阅读 · 0 评论 -
leetcode-1:Two Sum 两数之和
题目:Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the ...原创 2018-12-01 13:26:11 · 195 阅读 · 0 评论 -
leetcode-2:Add Two Numbers 两数相加
题目:You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and ret...原创 2018-12-01 15:04:50 · 372 阅读 · 0 评论 -
leetcode刷题方法指南
可以先刷高频前100个:https://leetcode.com/problemset/top-100-liked-questions/或者面试高频类:https://leetcode.com/problemset/top-interview-questions/字节跳动(头条)常考题:https://leetcode-cn.com/explore/interview/card/byted...原创 2018-12-01 15:10:34 · 16413 阅读 · 0 评论 -
字符串的全排列和所有组合问题及打靶问题
转自:https://blog.csdn.net/a1937935900/article/details/77103955问题1 :输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。 思路:这是个递归求解的问题。递归算法有四个特性:(1)必须有可达到的终止条件,否则程序将...转载 2018-12-01 15:51:32 · 577 阅读 · 1 评论 -
值最大子串,最长无重复子串,最长无重复子序列,最长公共子串,最长公共子序列解法及代码
1.值最大子串比如{5,-3,4,2}的最大子序列就是 {5,-3,4,2},它的和是8,达到最大;而 {5,-6,4,2}的最大子序列是{4,2},它的和是6。思路:看子串和是否大于0,大于0继续加,小于0就从当前开始。class Solution {public: int FindGreatestSumOfSubArray(vector<int> array...原创 2018-12-19 17:40:41 · 395 阅读 · 0 评论 -
leetcode-7:Reverse Integer整数反转
题目: Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123Output: 321 Example 2: Input: -123Output: -321 Example 3: Input: 120Output: 2...原创 2018-12-14 13:09:29 · 256 阅读 · 0 评论 -
leetcode-8: String to Integer (atoi)字符串转换整数 (atoi)
题目: Implement atoi which converts a string to an integer. The function first discards as many whitespace characters as necessary until the first non-whitespace character is found. Then, start...原创 2018-12-14 14:32:57 · 296 阅读 · 0 评论 -
leetcode-9: Palindrome Number回文数
题目: Determine whether an integer is a palindrome. An integerisapalindrome when itreads the same backward as forward. Example 1: Input: 121Output: true Example 2: Input: -1...原创 2018-12-14 14:41:33 · 190 阅读 · 0 评论 -
leetcode-16:3sum closest最近的三数之和
题目: Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of the three integers. You may assume that each inp...原创 2018-12-20 09:57:31 · 148 阅读 · 0 评论 -
leetcode-17:Letter Combinations of a Phone Number电话号码的字母组合
题目: Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent. A mapping of digit to letters (just like on the telephone but...原创 2018-12-20 10:27:18 · 222 阅读 · 0 评论