从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。思路:如果是一个顺子,有什么特点,如果不是顺子,又有什么特点? 例如1,2,3,4,5和1,3,4,5,6。观察可知,顺子的第一个数比最后一个数小4,不是顺子的第一个数比第二个数小5。如果是0,0,1,4,5,它也是顺子,不算0,第一个数比最后一个数小4。如果是0,0,1,4,6,第一个数比最后一个数小5。总结规律。如果第一个数比最后一个数小4或者更少,则是顺子,如果多于4则不是顺子。如果存在相等的数,则也不是顺子。使用排序,如果有相等的数,则会位于相邻位置。代码:class Solution { public: bool isStraight(vector<int>& nums) { sort(nums.begin(),nums.end()); int len = nums.size(); int zero = 0;

把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。思路一:统计每个骰子的点数,然后求和。使用深度优先遍历,用一个数组记录每个骰子的点数,第一个骰子的点数有6种可能,记录一种,然后记录下一个骰子的点数,下一个骰子同样有6种,和上一个骰子同样操作。当最后一个骰子的点数记录完毕之后,统计数组的和,此和出现的次数加一。代码:class Solution { private: vector<int> sum; vector<double> count; public: void dfs(int n, int cur) { if(cur == n) { int su = 0; for(int i = 0;i < n;i++) { su += sum[i]; } count[su-n] += 1.0; return; }

请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1思路一个普通的队列可以满足除最大值外的所有需求,所以增加一个数据结构满足最大值即可。增加一个单调递增的队列,始终保持在O(1)时间内获取最大值。代码class MaxQueue { queue<int> normalQue; deque<int> maxQue; public: MaxQueue() { } int max_value() { if(!maxQue.empty()) { return maxQue.front(); } return -1; } void push_back(int value) { normalQue.push(value);

给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。思路:使用一个双端队列window,保持window里的值从队首到队尾是从大到小的。每次取window的队首元素为窗口里的最大值。新元素入队时,判断队尾元素是否比新元素小,如果小,则队尾元素出队,否则新元素入队。取最大值时,要确保队首元素都在窗口里,如果不在,则让其出队。然后再拿队首元素当最大值。代码:class Solution { public: vector<int> maxSlidingWindow(vector<int>& nums, int k) { deque<int> window; for(int i = 0;i < k;i++) { while(!window.empty() && nums[window.back()] <= nums[i]) { window.pop_back(); }

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。思路s表示待左旋转的字符串,length表示整个字符串的长度,n表示前面若干个字符的个数,先把整个字符串反转,然后把s[0,length-n-1]和s[length-n-1,length-1]分别反转。代码class Solution { public: void reverse(string& s,int left,int right) { while(left < right) { char tmp = s[left]; s[left] = s[right]; s[right] = tmp; left++; right--; } } string reverseLeftWords(string s