![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer_Codeing
aloha-cloud
知其然 知其所以然
展开
-
链表倒数第k个结点
1、链表倒数第k个结点题目描述:输入一个链表,输出该链表中倒数第k个结点。解题思路:快慢指针。#include<iostream>using namespace std;class ListNode { int val; struct ListNode *next;public: ListNode(int x) :val(x), next(...原创 2019-03-31 20:44:42 · 90 阅读 · 0 评论 -
数组奇偶重排
/* * 2019-04-06 * 题目描述: * 输入一个整数数组,实现一个函数来调整该数组中数字的顺序, * 使得所有的奇数位于数组的前半部分,所有的偶数位于数组的 * 后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 */#include <iostream>#include <vector>using namespace std;...原创 2019-04-06 21:42:27 · 507 阅读 · 0 评论 -
数组中出现次数超过一半的数
题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。1、方法一/* * 采用阵地攻守的思想: * 第一个数字作为第一个士兵,守阵地;count = 1; * 遇到co...原创 2019-04-21 19:53:55 · 122 阅读 · 0 评论 -
二进制中1的个数
1、二进制中1的个数解题思路:理解 n = n & (n-1);以n = 13作说明:假设 n = 13,则二进制表示为 n = 1011第一次: n = 1011 & 1010 = 1010第二次: n = 1010 & 1001 = 1000第三次: n = 1000 & 0111 = 0000不难发现 n-1 的二进制实现了将 n...原创 2019-04-22 10:38:12 · 166 阅读 · 0 评论 -
青蛙跳台阶
1、跳台阶/* * 题目描述: * 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 * 解题思路: * 跳上一个n级的台阶总共有f(n)种跳法 * 假设最后一跳跳k个阶梯,那么还有f(n-k)种跳法 * 显然 k<=n,则f(n) = f(n-n) + f(n-(n-1)) + f(n-(n-2)) +...+...原创 2019-04-22 11:26:24 · 92 阅读 · 0 评论 -
二叉搜索树转有序双向链表
1、二叉搜索树转有序双向链表题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。#include <iostream>#include <list>#include <stack>using namespace std;struct TreeNode { i...原创 2019-04-22 17:35:46 · 268 阅读 · 0 评论 -
数组中重复的数字
1、数组中重复的数字在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。1)解法1/* 解题思路:插入排序*/bool duplicate(int numbers[], ...原创 2019-04-27 00:11:32 · 217 阅读 · 0 评论 -
链表中环的入口地址
题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。方法1:1)定义快慢指针,找出相遇节点。2) 相遇后获取环中节点数量,即快指针不动,慢指针继续走,再次相遇时满指针刚好走了一个环,并且满指针继续走时将其插入vector中3) 从链表头开始遍历,找到第一个vector中存在的节点即为入口环节点class Solution {public:...原创 2019-09-05 13:32:36 · 141 阅读 · 0 评论