摘要:
给你一个8*8的棋盘,从一个起点开始,按日字形走(如果行移动两格,列移动1格,如果列移动两格,行移动1格),走满整个棋盘,每个点只能走一遍,输出一个可行路径 一、dfs输出所有路径 一开始以为如果能走满整个棋盘,那么从任意起点开始搜索都能搜出答案,结果是错的,只能从一个特定的入口开始才能走完整个期盘 阅读全文
摘要:
一、双端队列的结构 deque的结构是由两个数组组成的,暂且把这两个数组称作是1号数组和2号数组(Array_1、Array_2) 1号数组保存的是指向2号数组的指针,1号数组的初始大小为2,在2号数组满的时候进行2倍扩容,初始化1号数组中间位置的指针指向2号数组Array_1[size/2]=Ar 阅读全文
摘要:
平衡二叉树每一个节点的平衡因子都小于等于1,所以我们判断每一个节点左右子树的深度查是不是小于等于1即可 我们可以从上往下开始判断每一个节点的平衡因子(两个递归,一个求深度,另一个递归树) 也可以从叶子节点往上递归,把每个节点的深度保存再节点中,判断平衡 因子(下面代码就是使用这种方法) #inclu 阅读全文
摘要:
一条链表如何判断是否有环?若是有环那怎么找到链表环的入口? 解决思路 先判断是否有环 思路: 用快慢两个指针分别从链表头开始,慢指针一次走一个节点,快指针一次走两个节点next -> next,这样如果有环那快指针务必会跑到慢指针后面,随即两者之间的距离一次会缩小一步,最终相遇。若是未相遇且快指针的 阅读全文
摘要:
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。 一、普通函数和回调函数 普通的函 阅读全文
摘要:
一、memcpy和memove void* memove(void*destin , void* source, size_t count) { //进行这样的判断是为了解决拷贝重叠的情况 if (destin > source) { //这里拷贝的时候还可以提高效率 //因为CPU单次可以拷贝的最 阅读全文
摘要:
建立一个深度为n的完全二叉树,并翻转值为m的子树,输出最后层序输出二叉树的所有节点 节点的值从1开始递增 输入: 4 3 输出 1 2 3 4 5 7 6 8 9 10 11 14 15 12 13 #include<iostream> #include<queue> #include<math.h 阅读全文
摘要:
亲7数 大致问题是:给定一些个位数如[1,1,2,0]这种,计算完全使用这些数字构成的数能整除7的个数 输入 1 1 2 输出 2 一开始想用next_permutation()直接秒的,后来测试不对,对于重复的元素排列组合,只会算是同一种情况 比如1 1 2的全排列应该是有 1 1 2 1 1 2 阅读全文
摘要:
小易有一个初始为空的数字集合,支持两种操作: 1、加入数字x到集合中。 2、询问集合中是否存在一个子集,满足子集中所有数字的Or值恰好为k。 Or为二进制按位或操作,C++中表示为"|"。 小易希望你能解决这个问题。 思路:或运算的规则是有1 就为1 判断子集的所有或运算值是否和k相等,只要把符合条 阅读全文
摘要:
思路:从左往右遍历一遍高度值,在[ 0 , i ]范围内,求以height[ i ]为高度值能取的最大面积,不断更新这个最大面积即为最终结果 以某个柱子作为高度的最大面积如何求? >单调递增栈 举个例子:给定柱子的高度分别为2 1 5 6 2 3 下标在[0,2]的范围内,以5为高的最大面积为5*1 阅读全文