自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

han_hhh的博客

fighting

  • 博客(26)
  • 收藏
  • 关注

原创 Rolling The Polygon

第一行输入测试样例个数 t第二行输入凸多边形点的个数 n接下来的n行输入n个顶点坐标再输入目标点坐标将凸多边形沿着他的边转一圈,输出目标点的运动轨迹长度思路:观察发现,目标点每段轨迹都是一个圆弧,以第i个点为圆心,以两点之间距离为半径,转过的角度是第i个顶角的补角。弧长=弧度*半径弧度用cosA=(b*b+c*c-a*a)/(2*b*c)来求Aaco...

2019-08-31 17:42:12 127

原创 28. 实现 strStr()

法一:遍历haystack字符串,找到needle的第一个字符的位置,挨个比较,若均相同则返回这个i,否则继续遍历haystack串。还要注意needle为空串的情况刚开始 最后一个测试样例未通过class Solution {public: int strStr(string haystack, string needle) { int flag...

2019-08-20 10:57:02 92

原创 25. K 个一组翻转链表

计数,数量到达k就翻转该组。pre用来存储该组的上一个元素,nextpre用来存储该组的最后一个元素的下一个元素翻转这块有点绕/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(...

2019-08-20 10:36:30 73

原创 27. 移除元素

做完上一题后这道题很容易class Solution {public: int removeElement(vector<int>& nums, int val) { int i=0,j=0; int number=0; while(i<nums.size()){ if(nums[i]...

2019-08-19 12:08:36 75

原创 26. 删除排序数组中的重复项

要注意并没有说全是正数,所以最小的数应该是nums[0].思路:因为一个有序数组,cur从nums[0]开始,++,跟当前nums[i]比较,若nums[i]==cur,更改数组,将其赋值到该放数字的位置。若nums[i]<cur,说明不是连续的递增序列,cur++若nums[i]>cur,说明有重复的数字,且该数字已经在原数组中更改了,i++class So...

2019-08-19 12:01:14 108

原创 21. 合并两个有序链表

要先花大量时间思考清楚后再开始动手敲代码,要不会很晕的。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Sol...

2019-08-19 11:29:35 70

原创 23. 合并K个排序链表

合并n个有序链表,直接套用合并两个链表的程序,先将lists[1]赋值给temp,循环i从1到lists.size(),合并lists[i]和temp赋值给tempListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode* res=new ListNode(-1); ListNode*...

2019-08-19 10:29:09 81

原创 5052. 最大层内元素和

给你一个二叉树的根节点root。设根节点位于二叉树的第1层,而根节点的子节点位于第2层,依此类推。请你找出层内元素之和最大的那几层(可能只有一层)的层号,并返回其中最小的那个。参考/** * Definition for a binary tree node. * struct TreeNode { * int val; * Tree...

2019-08-18 13:23:14 88

原创 22. 括号生成

法一、观察n与n-1时的情况,找到新括号添加的位置,观察发现,n是在n-1的每个空白位置都加一对括号,最后将所有情况中重复的去掉后得到的。法二、递归,n有n个左括号,n个右括号,一共2n个,生成时,要保证当前位置左边的右括号个数<=左括号,(若右括号>左括号,左边会出现))(类似情况)用left和right来表示剩余的左括号和右括号。1、若left>righ...

2019-08-18 10:30:53 91

原创 Matlab调用Python中的自定义函数:未定义变量 "py" 或类 "py.mymod.search"

以D:\Matlab\bin\code\hello.py 为例def hello(x): print("hello world")(直接看解决方案滑到最后,中间是一个理解过程)刚开始是为了在matlab中调用python文件中的函数,但是一直提示如题错误这个问题搜遍了整个网站,matlab的帮助文档也看了,可以看看,可能会有点启发 https://ww2.mathw...

2019-08-13 20:13:39 4715 2

原创 19. 删除链表的倒数第N个节点

1、普通思路先遍历一遍链表得到他的长度,若长度=0,则直接返回,若删除的是第一个元素,则直接返回head->next,否则按常规流程直接删除倒数第N个元素/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListN...

2019-08-11 10:41:44 83

原创 18. 四数之和

与15、三数之和,16、最接近的三数之和思想类似,在三数之和外再套一层for循环。class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { int len=nums.size(); sort(nu...

2019-08-11 09:37:08 220

原创 17. 电话号码的字母组合

遍历之前先给一个res={""}每个数字对应一个字符串,将该字符串加入到结果中每个字符串的最后边for(string s :result)遍历result中的每一个字符串并将其赋值给s例如23result开始为{“”}读入2先将{“”}赋值给tmp暂时保存,给result的每一个元素s都加上2对应的a,添加到tmp后,再给result的每一个元素s都加上2对应的...

2019-08-10 22:21:42 109

原创 21. 合并两个有序链表

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

2019-08-08 23:24:13 85

原创 16. 最接近的三数之和

刚开始写了这样一个条件, 但是后来考虑,若target为负 这样不合理 if(nums[first]>=target){ return nums[first]+nums[first+1]+nums[first+2]; }正解,是上一个问题3Sum的延续class Solution {public: int th...

2019-08-08 20:48:52 119

原创 20.有效的括号

注意输入为"]"的情况class Solution {public: bool isValid(string s) { stack<char> res; map<char,char> record; record.insert(map<char,char>::value_type('(',')')...

2019-08-08 17:16:39 67

原创 15.三数之和

1、将nums排序用三个指针first,second,third2、first指针从头指向倒数第三个元素,三个数之和为0,所以若first指向元素为正,就break;此外,不遍历相同的两个元素,若first所指元素与前一个相同,则跳过。3、second指针和third指针分别指向first后的首尾元素。target=0-first;若second和thrd的和<target,则将...

2019-08-07 12:51:50 116

原创 13.罗马数字转整数

处理IV、IX、XL、XC、这些特例的情况,就是比较字符的后一个是否>前一个,如果是,说明为特殊情况。则用number[i+1]-number[i]class Solution {public: int romanToInt(string s) { int result=0; map<char,int> number; ...

2019-08-05 18:03:23 88

原创 14.最长公共前缀

要注意strs为空的情况思路每次都是从第一个单词中取字符,与后边单词的对应位置比对,若都可比对成功,则把这个字符加入到结果中。,否则返回上一次的结果。程序中用last来存储上一个字符的比对结果,res为当前字符的比对结果。最后比对完成后,再把res赋值给last(走到这一步说明第一个单词的所有字符都比对成功了。)class Solution {public: string ...

2019-08-05 12:15:28 142

原创 12. 整数转罗马数字

贪心法把4,9,40,90,400,900看成和1,5,10,50,100,500,1000一样的,用贪心法,始终取number中当前最大的数class Solution {public: string intToRoman(int num) { int number[13]={1000,900,500,400,100,90,50,40,10,9,5,4,1}...

2019-08-05 11:40:59 73

原创 11、盛最多水的容器

1、暴力法(超时)class Solution {public: int maxArea(vector<int>& height) { int maxx=0; for(int i=0;i<height.size()-1;i++){ for(int j=i+1;j<height.size();j+...

2019-08-04 18:05:16 79

原创 10.正则表达式匹配

刚开始很奇怪为什么这个题的标签是困难,然后写了出来发现我写出来的只针对从头到尾都一样,而不是如示例4,可以匹配一部分。示例 4:输入:s = "aab"p = "c*a*b"输出: true解释: 因为 '*' 表示零个或多个,这里 'c' 为 0 个, 'a' 被重复一次。因此可以匹配字符串 "aab"。只针对从头到尾相同的字符串的程序奉上,可能会有用,本题中通过了 357...

2019-08-03 14:46:44 272

原创 8. 字符串转换整数 (atoi)

这道题看起来不难,但是他要考虑的小细节也太多了。除了题目中已经给出来的样例,还有几个测试过程中发现的样例。考虑还是不够全面整数溢出这一块处理的还是不够好。INT_MIN=-2^31=-2147483648INT_MAX=2^31-1=2147483647刚开始只是简单处理对于 ans1=ans0*10+str[i] 当ans0<INT_MIN/10 或者ans1&g...

2019-08-02 17:35:50 91

原创 7.整数翻转

重点是考虑整数溢出的情况:ans1=ans0*10+temp不能把运算后的ans1直接与INT_MAX和INT_MIN比较,如果ans1超出数据范围,那么会报错;但是可以把运算前的ans0与INT_MAX/10或INT_MIN/10比较,若ans0>INT_MAX/10,或ans0<INT_MIN/10则ans1一定会超出数据范围,返回0class Solution...

2019-08-02 09:43:45 77

原创 6.Z字形变换

解法一:暴力法,把整个图形分成最后一个图形和剩下的图形,每个图形分为第一列和剩下的列,找规律编程。 图中每一个对勾是一个图形找bug找了好久好久,最后提交的时候还因为开的数组A的大小不合适,导致数组下边越界或者超时,试了几次竟然试出来了合适的大小…… 感觉自己真是个老实人。这种解法其...

2019-08-01 15:54:25 140

原创 5.最长回文子串

1、暴力法:超时了,只过了一小半数据class Solution {public: string longestPalindrome(string s) { string start; string tmp; string result=""; int maxx=0; for(int i=0;i&lt...

2019-08-01 10:41:20 68

空空如也

空空如也

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

TA关注的人

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