文章目录

  • 和为S的连续正数序列
    • 题目描述
    • C++代码
  • 和为S的两个数字
    • 题目描述
    • C++代码
  • 左旋转字符串
    • 题目描述
    • C++代码
  • 翻转单词顺序列
    • 题目描述
    • C++代码
  • 扑克牌顺子
    • 题目描述
    • C++代码


和为S的连续正数序列

题目描述

小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!

输出描述:
输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序

C++代码

class Solution {
public:vector<vector<int> > FindContinuousSequence(int sum) {vector<vector<int>>result;int low = 1;int high = 2;while(low<high){int current = (low+high)*(high-low+1)/2;if(current<sum){high++;}else if(current==sum){vector<int>temp;for(int i = low;i<=high;i++){temp.push_back(i);}result.push_back(temp);low++;}else{low++;}}return result;}
};

和为S的两个数字

题目描述

输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

输出描述:
对应每个测试案例,输出两个数,小的先输出

C++代码

class Solution {
public:vector<int> FindNumbersWithSum(vector<int> array,int sum) {int low = 0,high = array.size()-1;vector<int>res;while(low<high){int temp = array[low]+array[high];if(temp==sum){res.push_back(array[low]);res.push_back(array[high]);break;}else if(temp<sum){low++;}else{high--;}}return res;}
};

左旋转字符串

题目描述

汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!

C++代码

class Solution {
public:string LeftRotateString(string str, int n) {string s1 = "";string s2 = "";int len = str.size();if(str.size()==0){return s1;}else{int movepos = n%len;s1 = str.substr(0,movepos);s2 = str.substr(movepos);}return s2 + s1;}
};

翻转单词顺序列

题目描述

牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?

C++代码

class Solution {
public:string ReverseSentence(string str) {reverse(str.begin(),str.end());int count = 0;for(int i = 0;i<str.length();i++){if(str[i]==' '){reverse(str.begin()+count,str.begin()+i);count = i+1;}if(i == str.length()-1){reverse(str.begin()+count, str.end());}}return str;}
};

扑克牌顺子

题目描述

LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张牌就可以变成“1,2,3,4,5”(大小王分别看作2和4),“So Lucky!”。LL决定去买体育彩票啦。 现在,要求你使用这幅牌模拟上面的过程,然后告诉我们LL的运气如何, 如果牌能组成顺子就输出true,否则就输出false。为了方便起见,你可以认为大小王是0。

C++代码

class Solution {
public:bool IsContinuous( vector<int> numbers ) {int size = numbers.size();if(size==0){return false;}int count = 0;sort(numbers.begin(),numbers.end());for(int i = 0;i<size;i++){if(numbers[i]==0){count++;}}vector<int>num;for(int j = count;j<size;j++){num.push_back(numbers[j]);}int len = num.size();int blank = 0;for(int k = 0;k<len-1;k++){if((num[k+1]-num[k])!=1){blank = blank + (num[k+1]-num[k]-1);}if(num[k]==num[k+1]){return false;}}if(count>=blank){return true;}else{return false;}}
};


【剑指offer{40-44}】和为S的连续正数序列、和为S的两个数字、左旋转字符串、翻转单词顺序列、扑克牌顺子相关推荐

  1. LeetCode Algorithm 剑指 Offer 57 - II. 和为s的连续正数序列

    剑指 Offer 57 - II. 和为s的连续正数序列 Ideas 区间问题首先想到用双指针. 因为这题没有给定数组,其实相当于就是一个从1到target的数组,然后直接套双指针的模板就可以了. 双 ...

  2. 【LeetCode】剑指 Offer 57 - II. 和为s的连续正数序列

    [LeetCode]剑指 Offer 57 - II. 和为s的连续正数序列 文章目录 [LeetCode]剑指 Offer 57 - II. 和为s的连续正数序列 一.求和公式 二.滑动窗口(双指针 ...

  3. 剑指 Offer 57 - II. 和为s的连续正数序列 思考分析

    输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数). 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列. 示例 1: 输入:target = 9 ...

  4. Leetcode 剑指 Offer 57 - II. 和为s的连续正数序列 (每日一题 20210809)

    输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数).序列内的数字由小到大排列,不同序列按照首个数字从小到大排列.示例 1:输入:target = 9 输出: ...

  5. 2021-08-28剑指 Offer 57 - II. 和为s的连续正数序列

    双指针 1)终止条件target = = sum: 2)target > sum 的时候,left++: 3)target < sum 的时候,right++: 5)sum = ([rig ...

  6. 【LeetCode】剑指 Offer 40. 最小的k个数

    [LeetCode]剑指 Offer 40. 最小的k个数 文章目录 [LeetCode]剑指 Offer 40. 最小的k个数 一.笨比解法 二.堆排序 三.快速选择 总结 一.笨比解法 选择排序变 ...

  7. 【Java】 剑指offer(40) 最小的k个数

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入n个整数,找出其中最小的k个数.例如输入4.5.1.6.2.7 ...

  8. 最小的k个数 java_【Java】 剑指offer(40) 最小的k个数

    本文参考自<剑指offer>一书,代码采用Java语言. 题目 输入n个整数,找出其中最小的k个数.例如输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 思 ...

  9. 剑指offer 40.最小的 K 个数 python代码

    题目 寻找数组中的最小的k个数,也叫topk问题. 牛客网测试地址 注意: 牛客网的提交需要将最终的结果排序 思路 快速排序的 partition() 方法,会返回一个整数 j 使得 a[l-j-1] ...

最新文章

  1. Paper4:Voxel-Based Extraction and Classification of 3-D Pole-Like Object From Mobile LIDAR Point Clo
  2. 《C#图解教程》读书笔记之四:类和继承
  3. list,numpy,tensor之间相互转换的方法
  4. 平行志愿计算机检索原理,通俗图解平行志愿,让你明白平行志愿检索规则
  5. (*p)++和*(p++)和*p++的区别
  6. php怎么去除变量里的换行,php去除字符串换行符示例分享
  7. Spring的异步方法
  8. 三个值得期待的JavaScript新功能!
  9. c语言封闭曲线分割平面_高手的平面课堂:8种常用的设计排版方式,告别通宵加班...
  10. 原创|面试官:线上服务器CPU占用率高如何排查定位问题?
  11. 钉钉免登陆前端操作详解
  12. Lucene 和 Elastic
  13. 服务器计时器、Windows 计时器和线程计时器
  14. 5万字、97 张图总结操作系统核心知识点
  15. Word:退出即关机(转)
  16. 写一个最简单的mysql编程_要学简单的数据库编程!
  17. 2023年北京科技大学机械专硕考研成功上岸经验分享
  18. 专访深度学习之父Geoffrey Hinton:人工智能的向量之舞
  19. 国内首个《超融合技术白皮书》出炉,新华三携手产业联盟成员推动全新生态建设
  20. ticklength

热门文章

  1. 关于ddos你了解多少?
  2. 正面管教php_正面管教之PHP(家长帮助家长)
  3. 骑士游历问题【JAVA板】代码详细流
  4. Ubuntu安装flash插件
  5. PV操作与信号灯例子
  6. 关于JavaScript面向对象
  7. 剑指offer | 面试题54:二叉搜索树的第k大节点
  8. 红米6A刷LineageOS17.1
  9. windows通过浏览器远程连接Linux服务器的jupyter
  10. (转)什么是PR?什么是BD?