剑指offer--调整数组顺序

题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路 维护两个指针,第一个指针初始化为指向数组的第一个数字,它只能往后移;第二个指针初始化为指向数组的最后一个数...

2018-05-22 10:55:03

阅读数:51

评论数:0

(待扩展)读取一个文件统计词频

#include<iostream> #include<fstream> #include<string> #include<map&a...

2018-05-14 11:00:40

阅读数:41

评论数:0

剑指offer-数值的整数次方

题目:实现double Power(double base, int exponent), 求base的exponent次方,不得使用库函数,同时不需要考虑大数问题。#include<iostream> using namespace std; //主要考点在于需要考虑特殊情况 dou...

2018-05-05 11:26:43

阅读数:38

评论数:0

剑指offer-剪绳子

题目 给你一根长度为n绳子,请把绳子剪成m段(m、n都是整数,n&amp;gt;1并且m≥1)。每段的绳子的长度记为k[0]、k[1]、……、k[m]。k[0]* k[1]*……*k[m]可能的最大乘积是多少?例如当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此 时得到最大...

2018-04-20 11:11:09

阅读数:43

评论数:0

剑指offer-机器人的运动范围

题目 地上有一个m行n列的方格。一个机器人从坐标(0, 0)的格子开始移动,它每一次可以向左、右、上、下移动一格,但不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格(35, 37),因为3+5+3+7=18。但它不能进入方格(35, 38),因为3+5+3+8...

2018-04-16 19:57:14

阅读数:27

评论数:0

剑指offer-矩阵中的路径

题目 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。思路 回溯法:用回溯法解决问题就是,在某一步选择了其中一个...

2018-04-11 15:55:55

阅读数:35

评论数:0

剑指offer-查找

题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 思路 重点说一下二分查找法。如果是在排序的数组(或者部分排序的数组)...

2018-03-21 11:26:21

阅读数:39

评论数:0

剑指offer-斐波那契数列

题目 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 思路 递归不行,会超时,所以就用动态规划思想,利用一个数组来保存中间结果。#include<iostream> using namespace std; int Fibonacci(int n)...

2018-03-21 11:14:27

阅读数:27

评论数:0

剑指offer-二叉树的下一个节点

题目 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路 根据中序遍历的特点,要找到一个节点的下一个节点无非就是三种情况:1、有右子树,这时只需要把其右孩子作为下一个遍历的(并不是要找的)节点,然后沿着...

2018-03-20 08:54:43

阅读数:27

评论数:0

剑指offer-重建二叉树

题目 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的后序遍历序列。 思路 先序遍历的第一个节点即为根...

2018-03-19 15:54:02

阅读数:36

评论数:0

剑指offer-从尾到头打印链表

题目 输入一个链表的头节点,从尾到头反过来打印出每个节点的值。 思路 直接用栈。 代码 struct ListNode { int m_nValue; ListNode*m_pNext; }; void PrintListReverse(ListNode*pHead)...

2018-03-19 10:35:04

阅读数:27

评论数:0

剑指offer-替换空格

题目 请实现一个函数,把字符串中的每个空格替换成“20%”。 思路 从后往前替换,这样可以减少移动次数。 在合并两个数组(包括字符串)时,如果从前往后复制每个数字,则会重复移动某些数字多次,那么就可以考虑从后往前复制。 代码 #include&amp;lt;iostream&a...

2018-03-18 13:48:56

阅读数:27

评论数:0

剑指offer-二维数组中的查找

题目 在一个二维数组中,每一行从左到右递增。每一列从上到下递增。输入一个二维数组和一个整数,判断数组中是否含有这个整数。 思路 每次和数组的右上角的数字比较,若要找的数比右上角的数字大,则排除右上角数字所在的行,若要找的数比右上角的数字小,则排除右上角数字所在的列。如此就可以一步步缩小范围。...

2018-03-18 10:40:24

阅读数:43

评论数:0

剑指offer-数组中重复的数字

题目一 在一个长度为N的数组里所有数字都在0~n-1的范围内。请找出数组中任意一个重复的数字。例如,输入{2,3,1,0,2,5,3},则输出2或者输出3。 思路 数组中所有数字都在0~n-1范围内。如果这个数组中没有重复的数字,那么当数组排序之后,数字i应该出现在下标为i的位置上。由于数组...

2018-03-17 17:08:46

阅读数:40

评论数:0

一些基本算法--归并两个数组,二分查找

二分查找#include<iostream> using namespace std; int main(){ int a[10]={2,4,5,8,12,14,18,23,45,67};//只适用于已经排好序的数组的查找 int x=14; int high=9; ...

2017-11-01 19:49:29

阅读数:142

评论数:0

矩阵链相乘--动态规划

问题的陈述就省了,网上很多。 想谈一下动态规划和递归。先说递归,递归的核心是,将一个复杂的,规模庞大的问题,一步步的,把问题规模变小,直到问题简单到可以直接解决。 那么动态规划就更近一步,很多问题如果直接递归,那么往往会出现重复计算同一个值很多次的问题,这是一个很大的代价,因此,动态规划将记录...

2017-10-31 22:04:43

阅读数:96

评论数:0

C++之关联式容器

关联式容器不同于序列容器,在容器中每一个元素都有一个关键词,通过它可以找到相应的元素。 set:一种随机存取的容器,其关键词和数据元素是同一个值,不能够包含重复的元素。 multiset:可以包含重复的元素。 map:包含成对数值,一个是实际数据值,一个是用来寻找数据的关键词。一个关键词只能...

2017-09-06 15:22:05

阅读数:103

评论数:0

C++STL之序列容器

C++序列容器包含以下6种: 1.vector:一种随机访问的数组类型,它提供了对数组元素的快速,随机访问,以及在序列尾部快速,随机的插入和删除操作,vector的大小可变。 2.deque:一种随机访问的数组类型,提供了在序列两端快速插入和删除操作的功能,大小可变。 3.list:不支持随...

2017-09-06 15:00:06

阅读数:103

评论数:0

The C++ Programming Language 读书笔记(四)

本篇笔记是“表达式与语句”这一章的笔记。 一个程序开始于对函数main()的调用,在这样做的时候,有两个参数被送给main(),其中一个描述了命令行参数的个数,称作argc,另外一个描述了命令行参数的数组,称作argv。命令行参数都是字符串,所以argv的类型是char*[argc+1]。 人们有...

2017-04-11 11:21:42

阅读数:188

评论数:0

The C++ Programming Language 读书笔记(三)

本篇笔记是“指针,数组和结构”这一章的。 一个字符串包含的字符个数比它看起来的字符数要多一个,它总由一个空字符‘\0’结束。例如sizeof(“both”)的值是5。注意:字符串的类型时“适当个数的const字符的数组”,所以“both”的类型就是const char[5]. 可以用字符串给一个c...

2017-04-07 13:33:16

阅读数:239

评论数:0

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