随笔分类 - offer 刷题
摘要:1.普通方法 :将1-n遍历一遍 ,每一个数中1 的个数用取余方法求出 最后累加 n有logn位 遍历一遍是n次 一乘即是 算法复杂度 O(nlog(n)) 2.课本上方法实在是看不懂,什么递归啊 3. 牛客网上讨论区特别简单!! 没看懂 我画张表如下: 当n = 3141592时: <thead>
阅读全文
摘要:1 基于快排中 partition函数的思想 方法2 基于muiltiset 红黑树 最大堆排序
阅读全文
摘要:1.思路一 一开始 老不对老不对,我以为是 把vevtor 换成数组就对了 我以为是这个问题呢 其实不是 原因竟然是 end=index-1; 这里要拿出来才行 不然就是不对 注意吧 2.思路2 思路二:如果有符合条件的数字,则它出现的次数比其他所有数字出现的次数和还要多。 在遍历数组时保存两个值:
阅读全文
摘要:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba 链接:https://www.nowcoder.com/questionTerminal/fe6b651b66ae47d7ac
阅读全文
摘要:为什么使用二级指针 ???可以用一级指针,但是需要用一级指针的引用才行,一级指针的引用和二级指针一回事。比如说你有个数组指针 int *num,这个num现在指向数组第3个元素, 你在函数调用的时候,如果在函数参数传入num的话,你在函数调用里面对num进行++操作,只会影响到这个函数里面,这个函数
阅读全文
摘要:输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径 。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 (注意: 在返回值的list中,数组长度大的数组靠前) 1 其实根本没检查 大的靠前
阅读全文
摘要:1.和课本思路保持一致,先找到了根节点 因为是二叉搜索树 所以比根节点值小的是左子树,比根节点大的是右子树 判断完一轮后 将左子树放进去再进行判断! 右子树进行判断 ;当然考虑什么时候有左右子树;
阅读全文
摘要:1. 使用到队列 先进先出 看书为准 C++队列queue模板类的定义在<queue>头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的。C++队列queue是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构。 C++队列Qu
阅读全文
摘要:1. 要有解决问题的步骤,层次感 (二叉树指针多,要判断指针是否为空) 1)先遍历二叉树,判断根节点是否一样;(没说明的情况能用递归就用递归) 2)如果根节点一样,那么进一步向下判断下面所有的子树一样;
阅读全文
摘要:1.递归求解 2. 非递归 注意顺序 将==NULL放在最后, 满足的也是一开始就进去了!!!
阅读全文
摘要:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 1.正常思路 剑指offer课本讲的很清楚 1)先由快慢指针得道环里的一个节点 //此函数也可以判断是否含有环 2)由环里的节点推断出节点的个数 3)由快慢指针得到环的入口;让快指针先走k个几点(k是环内节点个数) 2。断链
阅读全文
摘要://这里是让 头指针先走 走到k-1位置时 再让后面的指针走; 别马虎写错了哈 到时候后面的指针 是指向头的哈!!!! 或者以初始化就指向头即可!!!!! /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public
阅读全文
摘要:1.思路确实不好想: 尤其是下一个为* 的情况! 解这题需要把题意仔细研究清楚,反正我试了好多次才明白的。 首先,考虑特殊情况: 1>两个字符串都为空,返回true 2>当第一个字符串不空,而第二个字符串空了,返回false(因为这样,就无法 匹配成功了,而如果第一个字符串空了,第二个字符串非空,还
阅读全文

浙公网安备 33010602011771号