剑指offer例题分享--8】的更多相关文章

前言:继续分享,加油! 面试题44: 代码如下: #include<iostream> #include<stdlib.h> using namespace std; int compare(const void *arg1,const void *arg2) { return *(int *)arg1 - *(int *)arg2; } bool IsContinuous(int *numbers,int len) { ) return false; qsort(numbers,…
前言:继续前面的分享... 面试题31: 代码如下: #include<iostream> #include<limits.h> using namespace std; bool g_InvalidInput = false; int FindGreatestSumOfSubArray(int *data,int len) { ) { g_InvalidInput = true; ; } ; //整型最小值 //int greatestnum = 0x80000000; int…
前言:继续整理例题,快速做完这部分,然后继续用C++去刷数据结构和算法的题. 面试题28: 代码如下: #include<iostream> #include<stdio.h> using namespace std; void Permutation(char *pStr,char *pBegin) { if(*pBegin == '\0') { printf("str:%s\n",pStr); } else { for(char *pCh=pBegin;*p…
前言:搁置许久的更新要继续开始了!前一段时间一直在忙项目和C++的学习,所以搁置了!要改变注意了,要用C++进行编写了,因为要不断练习C++! 面试题15: 书中要求只能遍历链表一次,所以代码如下: #include<iostream> #include<cstdlib> using namespace std; struct ListNode { int data; ListNode * next; }; typedef struct ListNode linknode_t; t…
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 思路: n<=0时,有0种跳法 n=1时,只有一种跳法 n=2时,有两种跳法 已知当n>2时,当最后一次跳1级台阶,则之前有f(n-1)种跳法,当最后一次跳2级台阶时,之前有f(n-2)种跳法,即f(n)=f(n-1)+f(n-2); 故此处采用递归的方法 递归(英语:recursion)在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法. publ…
题目: 实现一个排序算法,排序对象是本公司员工的年龄.要求时间复杂度O(n),空间复杂度不能超过O(n). #include<iostream> using namespace std; void SortAge(int Ages[],int length) { if (NULL == Ages || length <= 0) return; const int oldAge = 99; int timesOfAge[oldAge+1]; for (int i = 0; i <=…
题目描述 输入一个链表,反转链表,输出新链表的表头 程序编写 将链表反转 public class Solution { public ListNode ReverseList(ListNode head) { if(head==null) return null; //head为当前节点,如果当前节点为空的话,那就什么也不做,直接返回null: ListNode pre = null; ListNode next = null; //当前节点是head,pre为当前节点的前一节点,next为当…
题目描述 输入一个链表,输出该链表中倒数第k个结点. 编程过程 此处采用两个指针依次后移的方法来求解,首先,用一个指针移到第k个位置,之后将第二个指针放在第一位,与第二个指针一同移动,当第二个指针移动到最后的时候,第一个指针即处于倒数第k个结点. 考虑:链表为空.k为小于等于零的数,以及k的长度大于链表长度等情况. /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = va…
题目:输入一个整数,输出该二进制表示中1的个数.其中负数用补码表示. 首先明确补码的定义: 原码 反码 补码 将最高位作为符号位(0表示正,1表示负), 其它数字位表达数值本身的绝对值的数字表示方式 如果是正数,则表示方法和原码一样: 如果是负数,符号位不变,其余各位取反. 如果是正数,则表示方法和原码一样: 如果是负数,则将数字的反码加上1 (相当于将原码数值位取反然后在最低位加1) 0的反码.补码都为零. 原数 原码 反码 补码 6 00000110 00000110 00000110 -6…
题目:用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 首先是概念理解,栈和对列存取的区别 栈(stack)是一种后进先出(last in first out, LIFO)的数据结构,而队列(queue)是一种先进先出(first in first out, FIFO)的结构,如图: 图参考:http://www.cnblogs.com/yangecnu/p/Introduction-Stack-and-Queue.html 对于该题目,设置两个栈1和2: 将栈…