![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
牛客网
sunandstarws
一枚小白,希望努力变成大佬
展开
-
二维数组的查询、替换空格、从尾到头访问单链表
啊啊啊啊,很久没有写代码了,打算每天都刷一下牛客网上面《剑指offer》里面的题,每天一题,分别用Java和Js代码写,本来想写算法,用c语言写,但是发现这个里面可以c++,没有c,那就先写java和js代码,后面再写C++.三个题写一个博客。这个学期没怎么学习,导致很多基础东西(函数等等)用法都忘记了一、在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都...原创 2019-01-19 19:57:05 · 136 阅读 · 0 评论 -
顺时针打印矩阵
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路一:通过题目中所举的例子,把题目意思理解清楚了。这个题目大概的意思可以看出,每一次将数组从外到内剥取,每一次将外圈先...原创 2019-02-18 20:18:19 · 125 阅读 · 0 评论 -
反转链表
题目:输入一个链表,反转链表后,输出新链表的表头。思路一:一看到这个题目,想到的第一个方法就是递归,采用递归思路,遍历到终点,然后再返回的时候,来进行反转,最好在草稿上面画画,一下子就懂了。代码一:java/*public class ListNode { int val; ListNode next = null; ListNode(int val)...原创 2019-02-13 21:04:39 · 100 阅读 · 0 评论 -
二叉树中和为某一值的路径
题目:输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。思路:这个题目对我还是挺难的,刚开始没有理解好题目 的意思,搞了很久,没有搞出来,后面才发现是自己把题目理解错,题目大概的意思就是“从根节点到叶子节点每一条路径经过的节点值和等于题目所给的数值”。我知道这个是dfs深度搜索,关于dfs类似的题...原创 2019-02-25 22:36:38 · 126 阅读 · 0 评论 -
栈的压入、弹出序列的比较
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路一:最开始想的就是模拟入栈过程,借助于辅助栈,思路大概就是:如果遇到与弹出序列一样的...原创 2019-02-20 22:04:04 · 100 阅读 · 0 评论 -
复杂链表的复制
题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)思路:刚看完题目,感觉挺简单的,就是复制链表嘛,但在实际操作中,出现很多bug,一直提交出错,说“空”。可能就是题目最后那句话的原因把,后面明白,就是重新创建一个链表,然后一个...原创 2019-03-06 22:11:02 · 2328 阅读 · 2 评论 -
stable_sort的用法与排序算法
一、sort和stable_sort的区别:c++中的stable_sort排序函数与sort功能差不多,排序所使用的思路不一样。1、sort(a,a+N) ,其中a是数组,a+N表示对a[0]至a[N-1]的N个数进行排序(默认从小到大排序);sort(a,a+N,cmp),第三个参数是一个函数。使用的是快速排序的思路,虽然速度快,但是有不稳定(什么叫不稳定,有两个相同的数A和B,在排...原创 2019-03-16 16:34:09 · 5890 阅读 · 0 评论 -
二叉搜索树与双向链表——一个对于我来说比较难的题目。二叉树的中序遍历
题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路:之前做个一个二叉搜索树的题目,了解了二叉搜索树的特点,即左子树小于节点,右子树大于节点,所以这个题目的大概意思就是中序遍历二叉搜索树,并且搞成双向链表(互相对应的),之前学数据结构的时候,对这些都是很熟悉的,代码也都会写,过去一年,现在都忘记了,所以对于这个题目,我想了...原创 2019-03-12 22:47:30 · 175 阅读 · 0 评论 -
简答题——加了思想的等差数列
题目描述如果一个数列S满足对于所有的合法的i,都有S[i + 1] = S[i] + d, 这里的d也可以是负数和零,我们就称数列S为等差数列。小易现在有一个长度为n的数列x,小易想把x变为一个等差数列。小易允许在数列上做交换任意两个位置的数值的操作,并且交换操作允许交换多次。但是有些数列通过交换还是不能变成等差数列,小易需要判别一个数列是否能通过交换操作变成等差数列输入描述:输入...原创 2019-03-18 17:29:26 · 127 阅读 · 0 评论 -
二叉搜索树的后序遍历序列
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路:首先,对二叉搜索树不熟悉,所以首先百度这个树有什么性质。性质:二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结...原创 2019-02-23 21:35:48 · 109 阅读 · 0 评论 -
链表中倒数第k个结点(简单题)
题目:输入一个链表,输出该链表中倒数第k个结点。思路一:遍历2次链表,第一次求出链表的长度,第二次求倒数第K个结点。代码一:java/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/p...原创 2019-02-12 21:03:36 · 129 阅读 · 0 评论 -
重建二叉树
牛客网:重建二叉树题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:看到这个题目就明白需要花点时间,上数据结构课的时候,明白了怎么根据前序和中序可以唯一确定一颗二叉树,并且也知道怎么重建,但是要...原创 2019-01-21 16:58:07 · 116 阅读 · 0 评论 -
合并两个排序的链表
题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路一:不递归的思路,定义中间链表,然后通过比较两个链表的比较,逐渐建立新的链表,这种思路和将两个数组合在一起差不多一样,不过有个注意点,就是返回是链表的头节点,所以还需要设定两个中间链表。代码一:java:/*public class ListNode { int val...原创 2019-02-14 21:11:24 · 76 阅读 · 0 评论 -
从上往下打印二叉树——广度搜索
题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路:一看这个题目,记得之前上数据结构课学过,这个相当于广度搜索,bfs吧。思路就是借助一个2个队列或者数组,一种是存放每一个节点的值,另一个存放节点。然后通过遍历第二个存放节点的队列,来读取其中的值,就是要求的值了,通过怎么构造第二队列吗,那么就可以先存放根节点,然后通过访问前面的节点的左右孩子节点,来放进队列中。emmm很好理解。...原创 2019-02-21 15:11:06 · 114 阅读 · 0 评论 -
树的子结构
题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路:第一感觉又要用递归了,如果不用递归思路,也可以解决,但是写起来比较麻烦,我也不打算那样子写,本题用了递归,也有很多细节需要注意。代码思路大概如下:首先判断a,b是否为空,当a,b不管谁为空,都不可能存在子结构。 当第一个根节点相同时,判断b是否a子结构,这里需要编写一个函数,从该点开始,...原创 2019-02-15 20:41:51 · 90 阅读 · 0 评论 -
数值的整数次方——多种方法总结
题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。思路一:本题以前也做过,只不是没有总结。有很多方法,效率不一样而已,第一种方法分情况讨论,然后采用分支递归,如果直接用循环,效率非常低O(n),现在分情况,分支递归,效率提高一半。考虑了底数和指数为0的特殊情况之后,就分指数是负数还是正数来讨论,如果是正数,那么分奇数还是偶数,因...原创 2019-02-10 14:40:27 · 624 阅读 · 0 评论 -
二进制中1的个数——多种解法
题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路一:套函数,利用语言相关函数包来做。对于Java可用toBinaryString(n)方法,得到n的二进制,如果n是负数,得到n的二进制补码,关于ja转化的函数,我不深究了,网上有总结。对于Js,可以用toString(2)函数,但是对于负数没法使用,可以先将转化为无符号数再用该函数,至于为什么,,,我也没有相通。代...原创 2019-02-10 17:03:11 · 223 阅读 · 0 评论 -
二叉树的镜像(简单题)
题目:操作给定的二叉树,将其变换为源二叉树的镜像。二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5思路:一开始看题目...原创 2019-02-16 19:55:26 · 164 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面(简单题)
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路一:我看题的第一个想法就是定义2个数组,一个放奇数,一个放偶数,最后合成一个数组。还可以用堆栈实现,可能更方便。代码一:java:public class Solution { public vo...原创 2019-02-12 20:54:40 · 122 阅读 · 0 评论 -
交错01串
题目描述如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如: "1","10101","0101010"都是交错01串。小易现在有一个01串s,小易想找出一个最长的连续子串,并且这个子串是一个交错01串。小易需要你帮帮忙求出最长的这样的子串的长度是多少。输入描述:输入包括字符串s,s的长度length(1 ≤ length ≤ 50),字符串中只...原创 2019-03-18 17:53:13 · 402 阅读 · 0 评论