摘要:
1 class Solution { 2 public: 4 bool isNumeric(char* string) 5 { 6 std::string str=string; 7 if(str.empty()){return true;} 8 bool if_e=false,if_dian=fa 阅读全文
摘要:
这题一年前就做过,当时刚开始刷leetcode,提交了几十次过不去,就放那没管了。今天剑指offer又遇到这题,终于做出来了,用的dp。 1 class Solution { 2 public: 3 bool isMatch(string s, string p) { 4 int s_len=s.s 阅读全文
摘要:
我的常规方法: 由于数组长度n,所有数据的大小都在0到n-1之间,所以考虑把每一位上的数字都放到应该呆的位置。如果nums[i]!=i并且nums[i]该呆的位置(nums[nums[i]])已经等于nums[i]了,说明出现了重复数字。 1 class Solution { 2 public: 3 阅读全文
摘要:
用位运算模拟加法,num1+num2的加法结果可以分为两个部分,一部分为二进制位加法产生了进位的结果,另一部分是二进制位加法没产生进位的结果。 比如3+5,二进制011+101,产生进位的结果为最后一位1+1,进到倒数第二位,结果为010。没产生进位的是第1位0+1和第二位1+0,结果110。 1 阅读全文
摘要:
这种题目给一个数组,里面有一个数字只出现过一次,其他数字都出现过k次,求这个只出现过一次的数字。 参考leetcode评论区的思路,这种题目对于任意k都有一个通用解法,这个解法分别考察二进制位的每一位,求出每一位是1还是0,最终得到答案。 比如求答案的最后一位,那么统计数组所有数字的最后一位是等于1 阅读全文
摘要:
贪心算法(应该算吧),每次至少复合一对情侣 1 class Solution { 2 public: 3 int minSwapsCouples(vector<int>& row) { 4 if(row.empty()){return 0;} 5 int n=row.size(); 6 vector 阅读全文
摘要:
官方题解给了个双指针的方法,估计面试也不会,先不看了。 正常方法: 1.排序 2.用set或者直接在原vector上记录出现的值 3.二分,这里是对数据范围2分。令n为vector长度,则所有数据都在1到n-1的范围内。取le=1,ri=n-1,mi=n/2。然后遍历整个vector,计算在[le, 阅读全文
摘要:
1 class Solution { 2 public: 3 int firstMissingPositive(vector<int>& nums) { 4 if(nums.empty()){return 1;} 5 int n=nums.size(); 6 for(int i=0;i<n;++i) 阅读全文
摘要:
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 方法1:用set记录出现过的数字 class Solution { public: void FindNumsAppearOnce(vector<int> data,int* num1,int * 阅读全文
摘要:
这题之前leetcode做过,权当复习 首先这题没说是否一定有公共节点,如果代码可能因为这一点造成死循环的,需要提前验证所给两个链表是否有公共节点。 方法1:对于每一个list1的节点,遍历list2查找有无相同节点,O(MN) 方法2:用两个栈分别存储两个链表的所有节点,然后比较二者栈顶(如果有公 阅读全文