text: # 程序员进阶之算法练习（四十九）LeetCode
  
  ### 正文
  
  #### 题目1.两数之和
  
  ```class Solution {
  unordered_map<int, int> mp;
  public:
  vector<int> twoSum(vector<int>& nums, int target) {
  mp.clear();
  vector<int> ans;
  
  for (int i = 0; i < nums.size(); ++i) {
  if (mp[target - nums[i]]) {
  ans.push_back(i);
  ans.push_back(mp[target - nums[i]] - 1);
  break;
  }
  mp[nums[i]] = i + 1;
  }
  return  ans;
  }
  }leetcode;```
  
  #### 2.整数反转
  
  ```class Solution {
  public:
  int reverse(int x) {
  lld ret = 0, flag = x < 0 ? -1 : 1;
  lld tmp = abs(x), sz = 1;
  while (tmp) {
  ret = tmp % 10 + ret * 10;
  tmp /= 10;
  }
  lld intLeft = -(1LL << 31), intRight = (1LL << 31) - 1;
  if (ret < intLeft || ret > intRight) {
  ret = 0;
  }
  return (int)ret * flag;
  }
  }leetcode;```
  
  #### 3.字符串转换整数 (atoi)
  
  ```class Solution {
  public:
  int myAtoi(string str) {
  long long ret = 0;
  int flag = 0; // 前置符号， 0表示还没放过， 1 是正数，-1是负数
  bool hasConvert = false;
  for (int i = 0; i < str.length(); ++i) {
  if (str[i] == '-' || str[i] == '+') {
  if (flag) {
  return flag * ret;
  }
  flag = str[i] == '-' ? -1 : 1;
  hasConvert = true;
  }
  else if (str[i] >= '0' && str[i] <= '9') {
  if (!flag) flag = 1;
  hasConvert = true;
  ret = ret * 10 + str[i] - '0';
  if (flag * ret < -(1LL << 31)) {
  return -(1LL << 31);
  }
  if (flag * ret > (1LL << 31) - 1) {
  return (1LL << 31) - 1;
  }
  }
  else if (!hasConvert && str[i] == ' ') {
  continue;
  }
  else {
  return flag * ret;
  }
  }
  return flag * ret;
  }
  }lc;```
  
  #### 4.回文数
  
  ```class Solution {
  public:
  bool isPalindrome(int x) {
  char s[20];
  sprintf(s, "%d", x);
  int end = strlen(s) - 1, st = 0;
  while (st < end) {
  if (s[st] != s[end]) {
  return false;;
  }
  ++st;
  --end;
  }
  return true;
  }
  }leetcode;```
  
  #### 5.最长公共前缀
  
  ```class Solution {
  public:
  string longestCommonPrefix(vector<string>& strs) {
  string ret;
  while (true && strs.size()) {
  for (int i = 0; i < strs.size(); ++i) {
  if (strs[i].size() < ret.length() + 1) {
  return ret;
  }
  if (i > 0 && strs[i][ret.length()] != strs[0][ret.length()]) {
  return ret;
  }
  }
  ret.push_back(strs[0][ret.length()]);
  }
  return ret;
  }
  }leetcode;```
  
  0 条评论
  
  • ### 程序员进阶之算法练习（四十八）LeetCode
  
  题目链接 题目大意： 给出两个非空的链表用来表示两个非负的整数。其中，它们各自的位数是按照 逆序 的方式存储的，并且它们的每个节点只能存储 一位 数字。 ...
  
  • ### 程序员进阶之算法练习（十九）
  
  前言 这周很忙，但是越忙的时候反而越喜欢抽空做算法题。 欢迎关注algorithm文集。 这次A、B、C都是很合适的面试题。 正文 A. Memory ...
  
  • ### 程序员进阶之算法练习（四十四）
  
  题目链接 题目大意： 给出整数x，求两个整数a和b，满足： ???(?,?)+???(?,?)=? . GCD是最大公约数； LCM是最小公约数；
  
  • ### 程序员进阶之算法练习（十四）
  
  前言 坚持做算法练习对开发的好处是抽象能力变强，拿到一个需求能很快对其进行抽象，然后再用学过的设计模式相关知识进行整理，最后用代码实现。 最大的好处在于：对...
  
  • ### 程序员进阶之算法练习（三十四）LeetCode专场
  
  LeetCode上的题目是大公司面试常见的算法题，今天的目标是拿下5道算法题： 1、2、3题都是Medium的难度，大概是头条的面试题水准； 4、5题是Hard...
  
  • ### 程序员进阶之算法练习（二十四）
  
  前言 已经有三个月未更新算法文章，大厂工作环境是步步紧逼的，使得所有的人越来越忙碌。余下的学习时间，要用于技术预研、知识面开阔、底层原理理解等等，慢慢算法只能占...
  
  • ### 程序员进阶之算法练习（四十二）
  
  题目链接 题目大意： n个学生参加测试，一共有m道题，每道题的答案可能是(A, B, C, D , E)中的一个； m道题分别有?1,?2,…,??，共m...
  
  • ### 程序员进阶之算法练习（四十七）
  
  题目链接 题目大意： 给出一个整数1~n的排列。 接下来有m个询问，每个询问包括 l, r, x。 (l <= x <= r) [l, r]区间内的数字...
metadata: {"found_math": false, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 0, "mathjax_display_tex": 0, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 0, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0}