摘要:
请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 分析:滑动窗口法,用一个map记录每个字符出现的位置索引,当该字符之前出现过且在当前窗口内,则窗口左端点要右移到该位置。 class Solution { public: int lengthOfLongestSubst 阅读全文
摘要:
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 分析:归并排序,在归并的时候多加一行代码统计逆序对即可 class Solution { public: vector<int> a, t; int cnt = 0; voi 阅读全文
摘要:
0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。 分析:约瑟夫环问题,可以用循环链 阅读全文
摘要:
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。 题解:使用位运算 计算不进位的和 sum = a ^ b; 计算进位carry = a & b << 1; 重复上两步a = sum; b = carry; class Solution { publ 阅读全文
摘要:
1. 二叉搜索树的最近公共祖先 判断当前节点的值和两节点的值的大小即可确定$LCA(p, q)$的位置: 如果p q的值都小于当前节点的值,则递归进入当前节点的左子树;如果p q的值都大于当前节点的值,则递归进入当前节点的右子树;如果当前节点的值在p q两个节点的值的中间,那么这两个节点的最近公共祖 阅读全文
摘要:
注意各种特殊情况 class Solution { public: int strToInt(string s) { int res = 0; int i = 0; int flag = 1; // 检查空格 while (s[i] == ' ') i++; // 检查符号 if (s[i] == 阅读全文