#include"iostream" using namespace std; int CountDifferentBit(int m,int n) { ,diff=m^n; while(diff) { cnt++; diff=(diff-)&diff; } return cnt; } int main() { int m,n; while(cin>>m>>n) { cout<<CountDifferentBit(m,n)<<en…
剑指offer 面试题39:判断平衡二叉树 提交网址:  http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId=13&tqId=11192 时间限制:1秒       空间限制:32768K      参与人数:2481 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 分析: 平衡二叉树定义 递归解法 AC代码: #include<iostream> #include<vector&…
问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } 思路1: 先遍历链表,计算其长度length; 然后计算出倒数第k个结点就是正数第length - k + 1. 最后再遍历链表,找到所求结点 时间复杂度O(2n),需要遍历两次链表 代码如下: public List…
// 面试题15:二进制中1的个数 // 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数.例如 // 把9表示成二进制是1001,有2位是1.因此如果输入9,该函数输出2. #include <cstdio> int NumberOf1_Solution1(int n) { ; unsigned ; while (flag) { if (n & flag) count++; flag = flag << ; } return count; } int Nu…
自己答案: ListNode* MergeTwoSortedList(ListNode* pHead1,ListNode* pHead2) { if(pHead1==nullptr&&pHead2==nullptr) return nullptr; if(pHead1==nullptr) return pHead2; if(pHead2==nullptr) return pHead1; ListNode* pHead=(pHead1->m_Value<pHead2->m_…
#include "Queue.h" // ====================测试代码==================== void Test(char actual, char expected) { if(actual == expected) printf("Test passed.\n"); else printf("Test failed.\n"); } int main(int argc, char* argv[]) { C…
#include"iostream" using namespace std; bool IsTwoPower(int n) { )&n); } int main() { int n; while(cin>>n) { ) { cout<<"no"<<endl; continue; } if(IsTwoPower(n)) cout<<"yes"<<endl; else cout&l…
题目: 输入一个链表.输出该链表中倒数第k哥结点.  为了符合大多数人的习惯,本题从1開始计数.即链表的尾结点是倒数第1个结点. 比如一个链表有6个结点.从头结点開始它们的值依次是1.2.3,4,5,6.这个链表的倒数第3个结点是值为4的结点 为了得到第K个结点,非常自然的想法是先走到链表的尾端.再从尾端回溯K步. 但是我们从链表结点的定义可疑看出本题中的链表 是单向链表,单向链表的结点仅仅有从前往后的指针而没有从后往前的指针,因此这样的思路行不通. 既然不能从尾节点開始遍历这个链表.我们还是把…
思路: 定义两个指针同时指向head,第一个指针先走K-1步,随后二个指针同时移动,当第一个指针到末尾处时,第二个指针所指向的即为倒数第K个结点. #include <iostream> using namespace std; struct ListNode { int val; ListNode *next; ListNode():val(v), next(NULL){} }; ListNode *findLastKthnumber(ListNode **pListHead, unsign…
题目:输入一个链表,输出该链表的倒数第K个节点.为了符合大多数人的习惯,本题从1开始计数,即链表尾节点是倒数第一个节点. 解题思路: 解法一:一般情况下,单向链表无法从后一个节点获取到它前面的节点,可以通过两次遍历,第一次遍历获取链表中节点的个数,第二次遍历找到链表中第n-k+1个节点,就是链表的倒数第k个节点.但是这种方法效率低,可以使用一次遍历得到倒数第K个节点 解法二:一次遍历得到倒数第K个节点.维护两个指针,第一个指针从链表头结点向前走k-1步,第二个节点指向头结点,从第K步开始,如果走…