自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (1)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Leetcode每日一题:41.first-missing-positive(缺失的第一个正数)

int firstMissingPositive(vector<int> &nums){ //遍历一次数组把大于等于1的和小于数组大小的值放到原数组对应位置,对于重复的元素,置0; //然后再遍历一次数组查当前下标是否和值对应,如果不对应那这个下标就是答案,否则遍历完都没出现那么答案就是数组长度加1。 int len = nums.size();...

2020-04-30 11:27:02 53

原创 Leetcode每日一题:38.Count and Say(外观数列)

看题目着实难懂,评论老哥帮忙找答案,可以这么理解:题目的意思是对序列前一个数进行报数,数列第一项为1,那第二项就报第一项的有1个1,输出11,然后第三项就在第二项的基础上报数,第二项是11,第三项不就是2个1么,然后输出21string countAndSay(int n){ string res = "11"; if (n == 1) return "1...

2020-04-30 10:22:12 58

原创 Leetcode每日一题:202.happy-number(快乐数)

bool isHappy(int n){ if (n == 1) return true; if (n == 0) return false; bool a[1000] = {false}; //recording array int res = n; while (true) { int now ...

2020-04-30 08:45:54 69

原创 Leetcode每日一题:1095.find-in-mountain-array(山脉数组中查找目标值)

思路:最多三次二分法:第一次先用二分法找出峰值,后两次依次对峰值左、右侧二分查找target

2020-04-29 21:16:36 62

原创 Leetcode每日一题:48.rotate-image(旋转图像)

思路://旋转void rotate(vector<vector<int>> &matrix){ int len = matrix.size(); for (int start = 0, end = len - 1; start < end; start++, end--) { for (int s = st...

2020-04-29 09:09:28 66

原创 Leetcode每日一题:37.sudoku-solver(解数独)

得用到DFS,一条路走到黑;做这道题得时候一直在想 如何在line / 9 == 1的时候直接返回呢 开始准备用goto 后来改变主意设一个flag就行了bool flag = false;bool check(vector<vector<char>> &vec, int line, int col, char value) //检查这个值能不能被放入{...

2020-04-28 18:43:28 69

原创 Leetcode每日一题:36.valid-sudoku(有效的数独)

踏踏实实一个个元素来bool isValidSudoku(vector<vector<char>> &board){ for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { char value = board[...

2020-04-28 18:40:29 65

原创 Leetcode每日一题:34find-first-and-last-position-of-element-in-sorted-array(排序数组中查找某元素的两端位置)

解题思路:同样二分法先找到index 然后用两个指针指向index 一个向左一个向右遍历 直到找到值都为target的端点处get 到一个新的运行错误:runtime error: addition of unsigned offset to 0x129000a0 overflowed to 0x12900088错误的原因类似于:int i=0;int k=i; cout<<v...

2020-04-28 14:14:52 178

原创 Leetcode每日一题:56. I. 数组中数字出现的次数

本题想到了用异或去解 但是中间步骤没想到:参照大佬解法:相同的数异或为0,不同的异或为1。0和任何数异或等于这个数本身。nums = [1,2,10,4,1,4,3,3]a^a=0a^0=aabc=acba&(-a)=最低位为1的二进制(从又到左)所有的异或结果得到sum=2^10=8flag=-8&8=8可分为两组,一组为与flag相与等于1的[10],另一...

2020-04-28 13:12:40 59

原创 Leetcode每日一题:29.divide-two-integers(两数相除)

参照评论大佬思路 学到了:/** * 解题思路:这题是除法,所以先普及下除法术语 * 商,公式是:(被除数-余数)÷除数=商,记作:被除数÷除数=商...余数,是一种数学术语。 * 在一个除法算式里,被除数、余数、除数和商的关系为:(被除数-余数)÷除数=商,记作:被除数÷除数=商...余数, * 进而推导得出:商×除数+余数=被除数。 * ...

2020-04-28 01:34:47 36

原创 Leetcode每日一题:28.implement-strstr(实现strStr())

思路:KMP实现虽然效率高,但较为复杂;这里索性直接hash,注意int溢出,一定要取余int strStr(string haystack, string needle){ int len1 = haystack.length(); int len2 = needle.length(); if (len2 == 0) return 0; i...

2020-04-27 18:43:05 47

原创 Leetcode每日一题:26.remove-duplicates-from-sorted-array(删除排序数组中的重复项)

正常思维:依次遍历到尾,期间把经过的元素(不重复的 and 重复出现只取一个)依次push_back到vector里 然后把前面的全删除即可;简洁版:因为题目说了不考虑超出新长度后的元素,所以一个for循环nums[j++]=nums[i],遍历完就行了;两者效率相差并不大,因为属于同一个复杂度int removeDuplicates(vector<int> &nu...

2020-04-27 18:13:18 37

原创 Leetcode每日一题:33.search-in-rotated-sorted-array(搜索旋转排序数组)

思路:利用vector变长特性,将前面旋转的部分移到后面,然后二分查找,O(logn)复杂度int search(vector<int> &nums, int target){ int len = nums.size(); int right = len-1, left = 0; //boundary condition if (len ...

2020-04-27 12:21:18 75

原创 Leetcode每日一题:22.generate-parentheses(括号生成)

本题分别采用两种方法:暴力法(set+vector) 以及 dfs(vector)vector<string> generateParenthesis(int n) { set<string> resSet;//利用set的去重 将所有的可能放入set中 然后转换成vector vector<string> res; //boun...

2020-04-27 10:41:33 62

原创 Leetcode每日一题:23.merge-k-sorted-lists(合并K个排序链表)

这一题我的题解也不好意思说出口,把所有值装入变长数组,排序,再转换成链表复杂度应该在O(nlogn)开销处于中流水平评论中的 分治法(二分递归) 最小堆 着实没想到struct ListNode{ int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};ListNode *merge...

2020-04-26 09:28:56 64

原创 Leetcode每日一题:21.merge-two-sorted-lists(合并两个有序链表)

常规方法:采用归并排序的归并方法即可struct ListNode{ int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};ListNode *mergeTwoLists(ListNode *l1, ListNode *l2){ if (l1 == NULL) ...

2020-04-26 09:00:40 39

原创 Leetcode每日一题:20.valid-parentheses(有效的括号)

此类问题提一论用栈解决;这里为了方面 使用map保存键值对#include <iostream>#include <stack>#include <map>using namespace std;bool isValid(string s){ int len = s.size(); if(len==0) return true;...

2020-04-25 10:58:43 36

原创 Leetcode每日一题:46.permutations(全排列)

思路:也可以用递归来求解 但是对应开销要大 且递归的核心部分也没有变化//非递归法#include <iostream>#include <vector>using namespace std;/*Input: [1,2,3]Output:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2],...

2020-04-25 10:38:45 46

原创 Leetcode每日一题:19_remove-nth-node-from-end-of-list(删除链表的倒数第N个节点)

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* r...

2020-04-24 14:25:17 23

原创 Leetcode每日一题:17.letter-combinations-of-a-phone-number(电话号码的字母组合) 0ms通过

思路:这道题无非就是全排列的修改版,先建立一个对应号码的字符串数组,然后修改下它们的全排列一次性0ms通过#include <iostream>#include <vector>#include <string>using namespace std;vector<string> letterCombinations(string d...

2020-04-23 22:58:57 174

原创 Leetcode每日一题:15.3sum(三数之和)

思路:这道题与双指针法类似,使用三指针法 头尾各一个 中间一个来回扫,重点是如何剪枝,想了会我也只能剪出下面这样子了,但还是只超5%;评论区笑傻:#include <iostream>#include <vector>#include <algorithm>#include <set>using namespace std;vect...

2020-04-12 10:43:17 17

原创 VScode快捷键(持续更新)

格式整理: Alt + Shift + f复制当前行到下一行:Alt+Shift+下键复制当前行到上一行:Alt+Shift+上键查找: Ctrl + F

2020-04-11 17:18:03 48

原创 LeetCode每日一题:14.longest-common-prefix(最长公共前缀)

首先注意下前缀/后缀和子串的区别:"前缀"和"后缀": "前缀"指除了最后一个字符以外,一个字符串的全部头部组合; "后缀"指除了第一个字符以外,一个字符串的全部尾部组合。"子串":可以出现在一个字符串的任意位置的子字符串;比如"abcde" ,"a"、"ab"、"abc"、"abcd"是前缀,而任意连续位置"bc"、"abc"、"cde"等都属于子串!!...

2020-04-11 17:01:33 34

原创 Leetcod每日一题:151.reverse-words-in-a-string(翻转字符串里的单词)

思路是:双指针去头尾空格,然后遍历中间去空格到每个单词后最多一个空格;然后将整个字符串翻转,然后从头遍历将遇到的单词翻转回去;一开始因为while (s[end] == ' ' && end >= 0) //除去结尾空格end>=0不严谨,导致案例" "死活不通过,我以为结果有问题,试了几次才发现end在这个案例中会减到-1,使得s[-1]这种溢出情况出现;错误原...

2020-04-10 20:39:59 1399

原创 Leetcode每日一题:13.roman-to-integer(罗马数字转整数)

一开始用的map<char,int>,虽然通过但是时间和空间消耗巨大之后改成数组,瞬间时间空间消耗下降;新手的我只能想到用 if 语句判断题中的六个条件;int romanToInt(string s){ int res=0; int len = s.length(); if (len == 0) return 0; int ...

2020-04-10 18:35:25 45

原创 Leetcode:11.container-with-most-water(盛水最多的容器)

一开始直接想用暴力法加剪枝擦边通过的,没想到还是超时了;谁知道最后输入从1-15000一共15000个数据,吓坏!题解中得知双指针实现O(n),真的学到了,羡慕这些大佬的智商;借鉴大佬题解:对O(n)的算法写一下自己的理解,一开始两个指针一个指向开头一个指向结尾,此时容器的底是最大的,接下来随着指针向内移动,会造成容器的底变小,在这种情况下想要让容器盛水变多,就只有在容器的高上下功夫。 ...

2020-04-09 21:11:10 40

原创 JAVA笔记--数组和字符串常用方法
原力计划

数组定义int arr[];int[] arr2;初始化int arr[] = new int[]{1, 3, 5, 7, 9};int[] arr2 = {2, 4, 6, 8, 10};数组长度length int[] array = new int[5]; System.out.println(array.length);遍历使用for循环使用...

2020-04-09 10:28:02 59

原创 Leetcode:8.string-to-integer-atoi(字符串转整数)

再也不强行装逼要题目的英文描述,好多条件都没看出来,第一遍照着样例打的,错误一堆;应该还能剪枝下;#include <iostream>using namespace std;int myAtoi(string str){ long long result = 0; bool flag1 = false, flag2 = false; for (i...

2020-04-08 21:05:32 26

原创 LeetCode:10.regular-expression-matching(正则式表达)

这道题对于这个水平的我也只能理解下回溯法了;动态规划明天消化;时间复杂度好高class Solution {public: bool isMatch(string s, string p) { if (p.length()==0) return s.length()==0; bool first_match = s[0] && (s[0...

2020-04-07 22:49:12 26

原创 Leetcode:5.longest-palindromic-substring(最长回文子串)

这道题挺难的,暴力法固然爽,但是仍会超时,优化后也是,可能优化不够把;从0 - length-1用中心扩展法能保证比暴力法O(n^3)低;好像官网还给出三个方法,有时间可以细琢磨;#include <iostream>#include <string>using namespace std;//中心扩展法string longestPalindrome(st...

2020-04-06 16:08:02 25

原创 Leetcode每日一题:4.寻找两个有序数组的中位数

类似归并排序的合并阶段;本来想直接用一个pre和now,然后每次用k++,加到一般时直接出结果,后来觉得麻烦还是用vector了;class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int i =...

2020-04-05 21:37:20 34

原创 课外题:需要排序的子数组

#include <iostream>#define max_length 20using namespace std;int length;int a[max_length] = {2, 3, 7, 5, 4, 6};int result[4];void incre_sort(int a[]){ int p = -1, q = -1; //左右扫描 ...

2020-04-05 20:13:56 34

原创 排序算法之基数排序

基数排序就是按位数排序,最大数有n位就要进行n次入桶出桶;原理如下:应该都懂C++代码附上:看了几个代码,觉得还是自己写一下比较容易理解;#include<iostream>#include<vector>#include<cmath>#define max_length 100using namespace std;int a[max_le...

2020-04-05 11:25:19 32

原创 Leetcode每日一题:3.无重复字符的最长子串

耗时较多,要进一步优化;int lengthOfLongestSubstring(string s){ if(s.length()==0) return 0; //空字符串判断 int a[100]={0}; //ascii字符可见字符不超过100个,所以数组大小足够 for(int j=0;j<100;j++) a[j]=0; int...

2020-04-04 17:23:22 38

原创 LeetCode每日一题:2.两数相加

这题一开始准备用最笨的方法,把两个链表的数化出来,相加,再把结果化成链表的形式,但执行起来比较繁琐,且超时;所以参考了官方解答,采用进位逐个相加的方式简单不少,并且量少;而且从今天官网给出的java官方解答,java不用指针,比如ListNode head=new ListNode(0);有时间还是学学java吧,毕竟跨平台且实用性强,语法方面和C++差别不大;一开始时间70+ms,现在...

2020-04-03 20:51:00 69

原创 Leetcode每日一题:7.整数反转

get到Clion的一个新问题:Clion中多个main函数的问题;详情借鉴:解决Clion中多个cpp文件运行时出现multiple definition of `main’class Solution {public: int reverse(int x) { long long result=0; while(x) { ...

2020-04-02 22:38:51 31

原创 Leetcode每日一题: 1.two-sum(两数之和)

执行时间上仍有较大改进之处;今天还get一个新的编译错误点:编译错误 error: control may reach end of non-void function [-Werror,-Wreturn-type]->大概率是编译器认为在有返回值的函数你并未给出恰当的返回值,此时在最后加一个恰当的return即可,该问题也在牛客上出现过class Solution {publ...

2020-04-02 00:21:07 28

CMU CSAPP课件

CMU CSAPP课件

2020-09-26

devC++出现error: ld returned 1 exit status错误

发表于 2019-11-11 最后回复 2019-11-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除