自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

丁香枝上,豆蔻梢头

提出问题,解决问题,是我前进的动力

  • 博客(11)
  • 问答 (2)
  • 收藏
  • 关注

原创 每日一题——子树

有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。注意事项若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。您在真实的面试中是否遇到过这个题? Yes 这个题其实不好思考,其中嵌套两层递归,需要清楚程序的运行。

2017-07-23 20:52:54 281

原创 每日一题——二进制数1的个数

普通方法 int countOnes(int num) { // write your code here int count = 0; for(int i = 0;i<32;i++) { if((num & 1) == 1) count++; num >

2017-07-20 22:55:29 391

原创 每日一题——出栈入栈顺序的合法性

判断元素出栈入栈顺序的合法性 例子: 入栈顺序:1,2,3,4,5 出栈顺序:4,5,3,2,1 合法 入栈顺序:1,2,3,4,5 出栈顺序:4,5,3,1,2 不合法思路: 1,先判断,如果两个数据序列有任意一个为空;两个序列长度不相等;或者入栈序列长度小于等于0,这三种情况都肯定不合法; 2,创建一个栈,里面依次放入栈序列数据,再创建一个指针cur指向出栈序列。入栈时,

2017-07-20 20:05:33 529

原创 每日一题——实现取最小值的栈

实现一个栈,要求实现push,pop,min(返回最小值)的时间复杂度均为O(1)思路:使用两个栈,一个是datastack,用来存放每次push进的数据,而另一个是minstack,专门存放当前的最小值。 压栈:如果datastack为空或插入的值小于minstack中的栈顶元素,说明该值是最小值,所以向两个栈中都插入该值;至于其他情况,说明该值不是最小值,所以将该值插入datastack,而将

2017-07-20 09:52:36 292

原创 每日一题——栈实现队列,队列实现栈

1,用两个栈实现队列 2,用两个队列实现栈栈->队列 思路:入队时,直接往stack1压入元素; 出队时,判断stack2是否有元素,有则直接弹出栈顶元素,没有则将stack1中的元素一一压入stack2,再弹出stack2的栈顶元素。class MyQueue { public: stack<int> stack1; stack<int> stack2; MyQu

2017-07-20 00:29:26 344

原创 每日一题——删除无头链表的非尾节点、逆向打印单链表

删除无头链表的非尾节点 这个题还有一种出法:在O(1)时间复杂度下删除单链表节点(非表头节点或非尾节点)void deleteNode(ListNode *node) { ListNode* tmp = node->next; node->val = tmp->val; node->next = tmp->next; delete t

2017-07-19 14:19:59 225

原创 每日一题——链表相交问题

1>判断两个链表是否相交,若相交,求交点(链表不带环) 2>判断两个链表是否相交,若相交,求交点(链表可能带环)//链表不带环ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { // write your code here if(headA ==NULL || headB == NUL

2017-07-19 10:21:25 342

原创 每日一题——带环链表

判断链表是否带环。 若带环求环的长度。 若带环求环的入口处。并计算上述问题的时间复杂度求环的入口处(前面几行代码证明带环) 至于环的长度,从之前的推论可知,链表起始到环的入口的距离等于相遇点走到环入口的距离,所以环的长度就等于链表起始点到相遇点的距离(代码中的count)。 ListNode *detectCycle(ListNode *head) { // write yo

2017-07-18 23:55:09 353

原创 每日一题——寻找倒数第k个节点

快慢指针法 ListNode *nthToLast(ListNode *head, int n) { // write your code here ListNode* begin = head; ListNode* last = head; while(n--) { last = last->n

2017-07-14 17:01:32 270

原创 每日一题——逆置单链表

三指针法 ListNode *reverse(ListNode *head) { // write your code here if(head == NULL) return NULL; if(head->next == NULL) return head; ListNode* begin = head; ListNod

2017-07-14 17:00:06 378

原创 每日一题——链表合并

递归 class Solution { public: /** * @param ListNode l1 is the head of the linked list * @param ListNode l2 is the head of the linked list * @return: ListNode head of linked list *

2017-07-14 16:42:56 216

空空如也

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

TA关注的人

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