自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 字节提前批测试测试开发面筋

项目问项目,深挖,然后问项目难点,是怎么做的。然后聊到了用的数据存储的方式可以怎么优化,然后聊到了数据库数据库问我项目里数据库存储是一对多还是多对多,然后说学生选课的系统应该几个表,写sql:student:id、namecourse:id、namesc:id、sid、cid提供学生的名字,查询该学生选择的所有课程的名字leftjoin和rightjoin区别数据库索引,为什么要索引数据结构队列和栈的区别,在实际编码过程中,都怎么用到过计算机网络知道哪些协议,tcp和udp的区别,

2020-07-12 11:42:22 124

原创 快排

#include <iostream>#include<stdio.h>#include<vector>#include<string>using namespace std; void bubble(vector<int> &a){ int i,j,size=a.size(),flag; for(i=0;i<size;i++){ for(j=0;j<size-i;j++){ if(a[j]>a[

2020-07-12 09:43:07 102

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

思路1循环遍历两个链表,把符合条件的加在新建的链表节点后面,最后返回新的链表ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode* res; ListNode* p1=l1; ListNode* p2=l2; ListNode* p; if(l1==NULL){return l2;} if(l2==NULL){return l1;}

2020-07-02 11:34:12 78

原创 922.按奇偶排序

思路1用交换的思想,如果当前的不符合,就和后一位交换,如果交换之后还不符合,就和后面三位交换。保证对于当前的这一位元素操作结束后,它已经在合适的位置上。vector<int> sortArrayByParityII(vector<int>& A) { int size=A.size(),temp=A[0],n=1; for(int i=0;i<size-1;i++){ n=1; whil

2020-07-01 11:06:41 81

原创 965.单值二叉树

思路其实就是遍历二叉树的算法,需要注意一下空树代码public: bool isUnivalTree(TreeNode* root) { if(root==NULL){return 1;} return panduan(root,root->val); } bool panduan(TreeNode* t,int num){ if(t==NULL){return 1;} else if(t!=NULL&amp

2020-06-30 10:38:57 43

原创 101.对称二叉树

思路这道题让判断二叉树是不是镜面对称,一开始看错题了写的一头雾水==先把左子树和右子树拆开,分别看这两个的情况就可以了代码public: bool isSymmetric(TreeNode* root) { if(root==NULL){return 1;} return panduan(root->left,root->right); } bool panduan(TreeNode* p1,TreeNode* p2){

2020-06-30 10:21:59 52

原创 617.合并二叉树

思路把二叉树节点的值对应相加。一开始想太多了,想分别对根节点的左右节点进行操作,后来发现想的实在太复杂了,也长个教训,二叉树尽量都只对当前节点本身进行操作,不要搞花里胡哨的。另外需要注意的就是注意考虑空节点的问题。比如t2位空的时候,t2 也就不存在左节点和右节点。TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) { if(t1!=NULL||t2!=NULL){ if(t1==NULL){

2020-06-30 01:21:34 88

原创 226.翻转二叉树

思路二叉树相关的就是递归做法来解,首先找到每次循环需要干什么(左子树和右子树翻转),到什么情况结束(结点为null),每次循环返回什么(当前子树的根节点)代码TreeNode* invertTree(TreeNode* root) { if(root!=NULL){ TreeNode* p=root->left; root->left=invertTree(root->right); root-&

2020-06-30 00:06:05 55

原创 83.删除排序链表中的重复元素

分析既然是排序链表,那么就省去了给链表排序的过程,只需要比较是否重复即可。需要注意的是还要考虑到重复大于两次的情况。代码 ListNode* deleteDuplicates(ListNode* head) { ListNode *p=head; while(p!=NULL&&p->next!=NULL){ if(p->val==p->next->val){ p->ne

2020-06-29 19:46:22 1555

原创 c++小小准备

虚函数(多态)、纯虚函数父类和子类的继承 如何实现stl库 有好多种容器比如:vector类型转换函数 cast转换 四种:const cast、static cast、 dynamic cast、reinterpret castconst define区别 都是定义常量,define在编译时就确定了这个常量,const是在运行中。define不能调试,且消耗内存空间太大所以不建议用。define max,const+数据类型,比如const int。define又叫宏变量static 静.

2020-05-20 00:26:48 87

原创 69.x的平方根

题目分析1.这道题目要求找出x的平方根2.舍去小数部分,最后得到整数思路1.从i=0开始循环,一直循环到i的平方大于x时结束,这种方法复杂度为O(n)代码int mySqrt(int x) { long i=0; long res=0; while(res<=x){ i++; res=i*i; } return i-1; }运行结果...

2020-05-13 10:36:35 64

原创 1394.找出数组中的幸运数

题目分析这道题要求找出1.“出现频次和本身大小相等的数”2.若有多个则返回最大的3.若没有则返回-1思路1.因为是vector数组,所以可以先sort,然后从最后向前遍历代码int findLucky(vector<int>& arr) { sort(arr.begin(),arr.end()); int size=arr.size(); int i=size-1; int flag=arr[i],count

2020-05-12 23:57:29 150

原创 876.链表的中间结点

最初思路用count记录下节点个数,然后取中间的。这样做要将链表循环两次。代码ListNode* middleNode(ListNode* head) { ListNode* p=head; int count=0; while(p!=NULL){ count++; p=p->next;...

2020-03-23 15:10:01 104

原创 字节跳动测开一面面筋

测试对测试的理解,测试分为几类。针对抖音刷视频这个功能写测试用例快照的概念项目介绍项目,问怎么实现的,讲的很细节计算机网络在浏览器中输入域名,到浏览器显示页面,经历了什么过程。讲的时候提到了三次握手,就问三次握手的过程,为什么不是2次或者4次。讲到了tcp,问tcp是哪层的,这层还有什么协议,tcp和udp区别数据库数据库的范式c++什么是类提到了封装,就问除了封装之外...

2020-03-19 15:13:30 346

原创 836.矩形重叠

思路今日打卡题。给出矩形两个点的坐标,判断两个矩形是否有重叠。其实给出矩形两个点坐标相当于给出了xy的区间,比较两个矩形的xy区间值就好了。比较的过程:取出不符合重叠标准的几种情况返回false,剩下的都true。代码bool isRectangleOverlap(vector<int>& rec1, vector<int>& rec2) { ...

2020-03-18 21:27:46 86

原创 110.平衡二叉树

思路树的问题都用递归做就好了。递归需要看:这个递归是在何处停止的,返回的应该是什么。比如这道题,题目当中已经给出了,平衡二叉树的定义就是,左子树和柚子树的高度差不大于1的树。所以很自然的可以想到通过求两边子树的高度差来判断。那么怎么求高度差呢,就需要引入maxdepth函数,这个函数的写法在上一篇已经写过了,也算是趁热打铁拿过来用一下。如果高度差>1则返回false,如果输入的为空则返回...

2020-03-18 00:21:17 138

原创 104.二叉树的最大深度

思路先开心一下,每次自己写出来了树的递归就好开心呀~求二叉树的最大深度,其实是依次求每一颗子树的深度,取最大的,依次向下递归就好了。代码int maxDepth(TreeNode* root) { if(root==NULL){return 0;} return max(maxDepth(root->left)+1,maxDepth(root->...

2020-03-17 23:09:11 57

原创 7.整数反转

思路这道题就是很简单的数字问题,难点在于对于越界数值的处理。所以此处用long来定义res,就不用担心越界啦。最后把越界的输出为0就可以了。代码int reverse(int x) { long res=0; while(x!=0){ res=res*10+x%10; x=x/10; } ...

2020-03-17 10:09:37 147

原创 1160.拼写单词

思路这道题给出了一张单词表(数组words)和字母表chars,若chars当中的字母可以构成单词表中的某一个单词,则这个词算作已经学会的词。需要注意的是有一个附加条件,字母表中每个字母只能用一次,最开始做的时候没有考虑这一点,导致出现了让人抓耳挠腮的错误。解题思路先用哈希表存储chars当中的字母,出现的字母++,没有出现的继续为0。之后做单词比较的时候,新建一个哈希表,每次使用某一个单...

2020-03-17 09:54:38 67

原创 53.最大子序和

思路要求出一个数组当中最大和的一串序列。1.是一个动态规划+贪心问题,对于每一步,都判断当前的最好情况。即判断之前的序列和是否大于零,如果之前的是负数,那么显然再加上之前的序列之后,序列和会变小,所以就舍去之前的序列,以当前数字为起始点,重新向后查找。2.这样可以排除之前的序列,要求最大和,还需要排除之后的序列,所以引入变量res。最初使res和sum相等(sum是上一步骤中求的序列和),之...

2020-03-16 10:38:33 91

原创 面试题01.06 字符串压缩

思路这道题给出一个字符串,将重复的字符压缩成字符*出现次数形式的字符串。双指针法,一个指针指向新出现的字符,另一个指向他的下一个字符,比较两个字符,若相等count++,下一个指针右移,不等则输出当前状态的count和字符。tips1.这道题用res=res+S[m]+to_string(count)会显示内存超出限制。改为res+=S[m]+to_string(count)就不超出限制了...

2020-03-16 09:55:26 82

原创 阿里分享

简历教育背景 项目经历 获奖成果项目中写项目达到的效果 简历最好缩到一页面试看什么基础 语言、数据结构和算法、研究方向相关基础问题热情 有想法 爱测试成果 比赛、论文、和工作方向相匹配的专利、开源的关键贡献...

2020-03-15 19:48:24 182

原创 58.最后一个单词的长度

思路从后往前遍历。需要注意的是几种特殊情况1.结尾是空格的2.单个字母的3.空的int lengthOfLastWord(string s) { int size=s.size(),i=size-1,count=0,flag=0; if(size==0){return 0;} while(i>=0){ if(...

2020-03-15 00:43:36 54

原创 36.外观数列

思路暴力解就行了只需要主要 to_stringstring countAndSay(int n) { string cur="1"; int i=1; while(i<n){ cur=help(cur); i++; } return cur; } ...

2020-03-15 00:15:49 60

原创 27.移除元素

思路双指针,i指向当前更改的数组下标,j指向略过移除元素的下标,即j一直在i前面或与i相等。再设置count,一旦发现需要移除的,count就+1。代码int removeElement(vector<int>& nums, int val) { int i=0,j=0,size=nums.size(),count=0; while(j&l...

2020-03-14 12:32:52 39

原创 28.实现strStr()

最初解法解题思路双指针 依次移动,暴力双循环求解代码int strStr(string haystack, string needle) { int size1=haystack.size(),size2=needle.size(); if(size2==0){return 0;} int i=0,j=0,z=0; while...

2020-03-14 10:04:11 50

原创 169.多数元素

最初解法先排序然后输出中间位置的数,代码量很少但复杂度很高。int majorityElement(vector<int>& nums) { sort(nums.begin(),nums.end()); return nums[floor(nums.size()/2)]; }改进解法摩尔投票法原理:(核心就是对拼消耗。玩一...

2020-03-13 22:38:12 46

原创 3.12 测试开发面试

今天一面是测试经理来面的,我第一次视频面试,又是春招以来的第一次面试,紧张坏了,不过面试官比较温柔,我说话的一直有在反馈,感觉就稍微放松了一些。由于是测试经理面,所以问的都是测试方面的问题。因为我自我介绍里面提到了之前上课的项目,所以问了我以前用的测试工具。问我之前提交bug是在哪提交的,我当时上课的老师很喜欢华为云,项目都是在上面搞。然后又让我想想测试登陆界面需要有哪些测试用例,我balab...

2020-03-12 17:33:40 71

原创 c++知识点

1.多态多态分为静态多态(编译时多态)和动态多态(运行时多态)。静态多态:重载。同一个类里面,同名字的函数可以参数不相同,执行时可以分别执行。动态多态:虚函数、纯虚函数。纯虚函数是虚函数的子集,不能执行的虚函数被称为纯虚函数。什么是抽象类:含有纯虚函数的类是抽象类。2.继承和派生A派生B,则A是B的继承类,B是A的派生类。3.c++的三大特点封装 继承 多态4.构造函数和析构函数...

2020-03-12 13:56:24 52

原创 快速排序

思路快速排序是分治策略的排序算法,思想是确定一个值,然后将比这个值大的放到它右边,比它小的放到它左边,然后再对两边进行这样的递归操作。代码步骤快速排序有三步:找中轴左边快排右边快排其中最难的是找中轴,找中轴也有三步:给定中轴的值(left)从左往右找,将右边的值赋给左边从右往左找,将左边的值赋给右边代码void quickSort(int* arr,int left,i...

2020-03-11 16:07:33 67

原创 希尔排序

思路是插入排序的优化算法,插入排序是每相邻两个进行比较,希尔排序加入了“步长”概念,一步步缩小步长,实现排序。代码for(int gap=math.floor(size/2);gap>=1;gap=math.floor(gap/2)){ for(int i=gap;i<size;i++){ int j=i,current=arr[i]; while(j-gap>0...

2020-03-11 15:06:01 59

原创 面试题28-对称的二叉树

思路采用递归,先将树分为两株,即根节点的左子树和柚子树。然后利用函数,依次比较左子树和柚子树是否对称(左子树的左子树是否等于柚子树的柚子树等条件)/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right;...

2020-03-11 14:17:14 101

原创 1013-将数组分成和相等的三个部分

解题思路首先用accumulate函数求出数组的总和,再得到每一段的和,之后利用双指针i和j,分别从数组的0和size-1开始寻找满足和为每一段的和的数组段,找到之后记录i和j的值,再求i和j中间的和,判断是否符合。代码class Solution {public: bool canThreePartsEqualSum(vector<int>& A) { ...

2020-03-11 14:11:44 81

原创 本周需要准备的

sql数据库语句,select group by,order bysocket编程C++基本原理,继承多态 虚函数纯虚函数等计算机网络 三次握手四次挥手,常用的各层协议

2020-03-10 16:37:40 67

原创 剑指offer-面试题21

21.调整数组顺序(使得奇数在偶数前面)思路分析双指针操作,一个指针为0,另一个为size-1通过一次循环,把结果存入新的数组,时间复杂度为O(n)class Solution {public: vector<int> exchange(vector<int>& nums) { int m=0,n=nums.size(); ...

2020-03-10 14:59:24 53

空空如也

空空如也

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

TA关注的人

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