数组
Miss_yuki
由希要努力变强
展开
-
C++入门——定义数组的注意事项
今天看了数组,记录一个很小的点。int n=100;int a[n];会报错,因为数组定义是具有编译确定意义的操作,它分配固定大小的空间,因此元素个数必须是由编译时就能够确定的常量表达式。虽然根据上下文已经知道n的值,但编译动作会因为变量性质而完全不同。变量性质是具有空间占用的可访问实体,编译每次碰到一个变量名就对应一个访问空间的操作。因此,int a[n]实际上要在运行时,才能读取变量n的值,才...原创 2016-10-27 13:36:05 · 2927 阅读 · 0 评论 -
LeetCode刷题——找到字符串中所有字母异位词
大家好,继续刷题,已经刷到了哈希表的部分,感觉这道题还是学到了很多,记录一下。题目要求:思路:1.我自己想的办法很笨,最终超时了,就是把s分成一个一个子字符串,然后跟p一起sort一下,然后看一不一样。代码如下:class Solution {public: vector<int> findAnagrams(string s, string p) { ...原创 2018-08-06 17:41:26 · 774 阅读 · 0 评论 -
Leetcode刷题——搜索插入位置(运行速度beat 100%)
大家好,继续刷题日记,这是一道数组题。来看题目要求:(吐槽一下现在csdn改版以后插入图片真麻烦)思路:1.第一个是暴力循环,写起来也非常简单 2.但是第一个思路效率有点低,我有点不甘心,所以继续想了二分法,这是我第一次尝试二分法写代码,成功了,很开心,运行速度beat 100%。取两个指针,begin和end,分别表示开头和结尾,temp表示两个指针的中间。...原创 2018-07-18 17:36:15 · 341 阅读 · 0 评论 -
Leetcode刷题——求众数
大家好,抽空刷了一道题,也是一道简单的数组题,但是因为我用了map而且一次就通过了,感觉还是有必要写下来记录一下map的使用。题目如下:思路如下:首先用sort对数组进行排序,然后定义一个<int,int>型的map,第一个int为数重复的次数,第二个int为对应的数。遍历数组将重复的数和次数依次写入map。然后定义一个迭代器it,循环查找map中第一个int中的最大且大于...原创 2018-07-23 17:08:55 · 477 阅读 · 0 评论 -
Leetcode刷题——三数之和
大噶猴,前一段比较忙,刷题日记被耽搁了一段时间,从今天起开始恢复。今天开始刷leetcode中等难度的算法题了,第一道是三数之和,看下题目要求:思路:好久没刷题了手非常生,思路也很枯竭,只想到了暴力循环,找到所有相加等于零的vector之后对每一个vector做一个排序然后判断是否相等,erase掉相同的元素。代码是这样的:class Solution {public: vector&l...原创 2018-06-24 17:15:03 · 2163 阅读 · 0 评论 -
LeetCode刷题——合并两个有序数组(运行速度beat100%)
大家好,刷完了链表和树,来到了排序和搜索,看下题目:思路是这样的:如果按正常遍历,对nums2的每一位对nums1从头到尾遍历,找到合适的位置插入,这样做要移动的位数很多,时间复杂度为O(mn),且已经知道全部插入完成后nums1的长度为m+n-1.所以可以从后向前地插值。我们设置三个指针,一个temp指向nums1的第m+n-1位,一个i指向nums1的第m-1位,j指向nums2的第n-1位。...原创 2018-05-16 11:45:05 · 208 阅读 · 0 评论 -
LeetCode刷题——计算质数
大家好,本期刷题日记是计算质数。先看题目:思路:我最开始没想出什么好办法,是用硬算的方法,一个一个除,有能除尽的就不是质数,全都除不尽就是。这种方法很笨,就去看了别人的方法,看到一个很巧妙的,因为我还不太会转载,直接附上他的链接:点击打开新世界的大门学习了,希望能记住这种方法,我们下期见!...原创 2018-05-21 20:46:13 · 1483 阅读 · 0 评论 -
LeetCode刷题——只出现一次的数字
大家好,继续刷题日记数组部分,题目如下:我的思路是这样的:先做一个排序,然后逐个比较,如果相同就跳两个,直到找到跟下一个不同的为止。代码如下:class Solution {public: int singleNumber(vector<int>& nums) { sort(nums.begin(),nums.end()); int len = nu...原创 2018-05-08 15:34:16 · 450 阅读 · 0 评论 -
LeetCode刷题——旋转数组
大家好,我终于刷完了字符串的题,向数组迈进。做的第一道数组题很简单,来看下题目:使用复杂度为O(1)的原地算法的意思就是不要开辟新的空间,这里定义新的变量是没有关系的,但是注意不能使用new,malloc这类的开辟空间操作,例如不能定义新的vector数组,因为它包含了隐式的new,delete操作。思路如下:定义一个中间变量temp,让它等于数组的最后一位元素,并插入到数组的第一位,然后删除掉数...原创 2018-05-07 10:12:51 · 299 阅读 · 0 评论 -
LeetCode刷题——旋转图像
大家好,继续刷题,这是一道中等难度的题,来看下题目要求:思路:1.我最先想到的是暴力变换,就是从四个角开始循环移动,思路很简单,写起来很麻烦,代码如下:class Solution {public: void rotate(vector<vector<int>>& matrix) { int len = matrix.si...原创 2018-08-20 16:39:27 · 296 阅读 · 0 评论