上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 34 下一页
摘要: 这题一年前就做过,当时刚开始刷leetcode,提交了几十次过不去,就放那没管了。今天剑指offer又遇到这题,终于做出来了,用的dp。 1 class Solution { 2 public: 3 bool isMatch(string s, string p) { 4 int s_len=s.s 阅读全文
posted @ 2020-02-11 02:02 NeoZy 阅读(166) 评论(0) 推荐(0)
摘要: 我的常规方法: 由于数组长度n,所有数据的大小都在0到n-1之间,所以考虑把每一位上的数字都放到应该呆的位置。如果nums[i]!=i并且nums[i]该呆的位置(nums[nums[i]])已经等于nums[i]了,说明出现了重复数字。 1 class Solution { 2 public: 3 阅读全文
posted @ 2020-02-11 01:02 NeoZy 阅读(148) 评论(0) 推荐(0)
摘要: 用位运算模拟加法,num1+num2的加法结果可以分为两个部分,一部分为二进制位加法产生了进位的结果,另一部分是二进制位加法没产生进位的结果。 比如3+5,二进制011+101,产生进位的结果为最后一位1+1,进到倒数第二位,结果为010。没产生进位的是第1位0+1和第二位1+0,结果110。 1 阅读全文
posted @ 2020-02-11 00:05 NeoZy 阅读(98) 评论(0) 推荐(0)
摘要: 这种题目给一个数组,里面有一个数字只出现过一次,其他数字都出现过k次,求这个只出现过一次的数字。 参考leetcode评论区的思路,这种题目对于任意k都有一个通用解法,这个解法分别考察二进制位的每一位,求出每一位是1还是0,最终得到答案。 比如求答案的最后一位,那么统计数组所有数字的最后一位是等于1 阅读全文
posted @ 2020-02-10 02:44 NeoZy 阅读(142) 评论(0) 推荐(0)
摘要: 贪心算法(应该算吧),每次至少复合一对情侣 1 class Solution { 2 public: 3 int minSwapsCouples(vector<int>& row) { 4 if(row.empty()){return 0;} 5 int n=row.size(); 6 vector 阅读全文
posted @ 2020-02-10 00:58 NeoZy 阅读(223) 评论(0) 推荐(0)
摘要: 官方题解给了个双指针的方法,估计面试也不会,先不看了。 正常方法: 1.排序 2.用set或者直接在原vector上记录出现的值 3.二分,这里是对数据范围2分。令n为vector长度,则所有数据都在1到n-1的范围内。取le=1,ri=n-1,mi=n/2。然后遍历整个vector,计算在[le, 阅读全文
posted @ 2020-02-09 23:59 NeoZy 阅读(164) 评论(0) 推荐(0)
摘要: 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) 阅读全文
posted @ 2020-02-09 23:22 NeoZy 阅读(113) 评论(0) 推荐(0)
摘要: 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 方法1:用set记录出现过的数字 class Solution { public: void FindNumsAppearOnce(vector<int> data,int* num1,int * 阅读全文
posted @ 2020-02-09 21:08 NeoZy 阅读(167) 评论(0) 推荐(0)
摘要: 这题之前leetcode做过,权当复习 首先这题没说是否一定有公共节点,如果代码可能因为这一点造成死循环的,需要提前验证所给两个链表是否有公共节点。 方法1:对于每一个list1的节点,遍历list2查找有无相同节点,O(MN) 方法2:用两个栈分别存储两个链表的所有节点,然后比较二者栈顶(如果有公 阅读全文
posted @ 2020-02-09 03:55 NeoZy 阅读(141) 评论(0) 推荐(0)
摘要: leetcode上也见过一样的题,当时不会做 看了一下解法是纯数学解法就没看,结果剑指offer上也出现了这道题,那还是认真看下吧 对于数字abcde,如果第一位是1,比如12345,即计算f(12345)。 那么首位为1对结果的增益一共是10000到12345一共2346个。 另外首位为1的数字, 阅读全文
posted @ 2020-02-08 17:14 NeoZy 阅读(209) 评论(0) 推荐(0)
上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 34 下一页