Leecode-C++ (easy) 1~5

匿名 (未验证) 提交于 2019-12-02 23:51:01

001 两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum

class Solution { public:     vector<int> twoSum(vector<int>& nums, int target) {         vector<int> myVector;         map<int,int> myMap;         for (int i =0;i<nums.size();i++){              if(myMap.find(target-nums[i])==myMap.end()) //没有找到,添加到map中;map自身有find方法。             {                 myMap[nums[i]]=i;             }else{                 myVector={myMap[target-nums[i]],i};                  break;             }         }         return myVector;       } }; 

007 整数反转

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:

输入: 123
输出: 321
示例 2:

输入: -123
输出: -321
示例 3:

输入: 120
输出: 21
注意:

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer

class Solution { public:     int reverse(int x) {         int z=0;         while(x!=0)         {             if (z>INT_MAX/10 || z<INT_MIN/10) // 要注意溢出判断。                 return 0;             else{                 z = z*10+x%10;                 x =x/ 10;             }              }         return z;     } }; 

009 回文数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:

输入: 121
输出: true
示例 2:

输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:

输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number

class Solution { public:     bool isPalindrome(int x) {         if(x<0 || x>0&&x%10==0) return false;         if(x>=0 && x<10) return true; //各种情况要考虑清楚                  int y = 0;         while(x>y)         {             y = y*10 + x%10;             x = x/10;         }         if(x==y || x==y/10){                 return true;             }         else{                 return false;             }     } }; 

013 罗马数字转整数

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。

示例 1:

输入: “III”
输出: 3
示例 2:

输入: “IV”
输出: 4

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/roman-to-integer

class Solution { public:     int romanToInt(string s) {         map<char,int> myMap={             {'I',1},{'V',5},{'X',10},{'L',50},{'C',100},{'D',500},{'M',1000}};                  int x = 0;                  for (int i=0;i<s.length();i++)         {             if(i==s.length()-1 || myMap[s[i]]>=myMap[s[i+1]])                 x += myMap[s[i]];             else                 x -= myMap[s[i]];         }         return x;     } }; 

014 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 “”。

示例 1:

输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:

输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
说明:

所有输入只包含小写字母 a-z 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix

class Solution { public:     string longestCommonPrefix(vector<string>& strs) {         if(strs.size()==0)         {             return "";         }         if(strs.size()==1)         {             return strs[0];         }                  string result;         string tmp = strs[0];                  for (int i=1;i<strs.size();i++)         {             for(int j=0;j<min(tmp.length(),strs[i].length());j++)             {                 if(tmp[j]==strs[i][j])                     result+=tmp[j];                 else                     break;             }             if(result=="") return "";             else                 tmp = result;                 result = "";         }         return tmp;     } }; 
文章来源: https://blog.csdn.net/pxh_ww/article/details/97016076
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!