heyJulian
heyJulian
全部文章
分类
读书笔记(2)
题解(5)
归档
标签
去牛客网
登录
/
注册
heyJulian的博客
世间最昂贵不可储存的东西是时间,要么用以积累,要么用以老去。
全部文章
(共7篇)
位运算的使用小技巧
对于位运算的学习,可以通过位运算替换一些常用操作的使用场景来学习,如奇数偶数判断、两个变量交换、实现加法。如果面试官要求不能使用常规的方法解决,那我们如何想起一些清奇的思路呢?位运算也能起到同样乃至性能更好的效果。 1.奇数偶数判断 if(n % 2 == 1){ //是奇数odd }els...
位运算
2020-08-30
0
0
HeadFirst设计模式代理模式设计谜题ImageProxy类似乎有两个有条件语句控制的状态
问题来自HeadFirst设计模式第11章代理模式468页的设计谜题:ImageProxy类似乎有两个有条件语句控制的状态,你能否用另一个设计模式清理这样的代码?你要如何重新设计ImageProxy? 思路:我们可以使用状态模式:实现两个状态,分别是ImageLoaded和ImageUnloade...
代理模式
状态模式
2020-08-30
0
0
新集合 牛客编程巅峰赛S1第11场 - 青铜&白银
暴力出所有的可能集合,再与要求的限制作比较。最终求出能组成的新集合数量。 有n个元素,每个元素都有取与不取的两种可能,所以应该是2^n个. 因为n<=20,故至多有10^6个集合,我们可以采用暴力搜索。 因为要遍历出所有的取值情况,我们使用回溯来解决此类问题。...
回溯
2020-08-14
3
777
牛牛的01游戏 牛客编程巅峰赛S1第11场 - 青铜&白银
新建一个数组res,用于保存结果。 新建一个pos下标,用于指向数组res的最新元素的位置。 循环遍历一次输入数组str: 1.当res的第pos个元素和str的第i个元素都等于1,删除res的第pos个元素 并pos减一; &...
模拟
2020-08-14
2
869
中序序列 牛客编程巅峰赛S1第9场 - 青铜&白银
我们知道,只想知道一棵树的前序遍历和后序遍历是求不出中序遍历的。但是,因为题目多了一个条件【若某节点只有一个子结点,则此处将其看作左儿子结点】。所以可以求出唯一的一个中序遍历。 在二叉树的前序遍历中,第一个数字总是树的根结点,根结点右边的第一个结点总是左儿子结点。在该二叉树的后序遍历中,知道了该根结...
树
中序遍历
2020-08-07
5
890
牛牛的木板 牛客编程巅峰赛S1第9场 - 青铜&白银
对于每个r找到一个l使得【l,r】中0的个数小于等于m,当r右移的时候,l可能不动可能会跟着右移。当滑动窗口内黑色段的长度大于m时【清洗剂最多只能清洗m段】,l 需要右移。并随时更新当前窗口内的能获得的纯白色木板的最大长度和区间内黑色段的长度。时间复杂度为O(n)。 import java.util...
滑动窗口
2020-08-07
5
790
牛牛的字符反转 牛客编程巅峰赛S1第9场 - 青铜&白银
这道题最直观的解法并不难,需要我们分情况判断一下所有的情况。 举个例子“1234567”。循环右移的所有情况为7123456、6712345、5671234、4567123、3456712、2345671、1234567。 我们来看看所有情况所需的最少区间反转次数。 1234567->654...
2020-08-07
2
781