每天一个算法题
程序媛皮皮虾
在优秀程序猿边缘试探
展开
-
c++实现字符串中空格替换成三个字符
题目描述:请实现一个函数,把字符串中的每个空格替换成“%20”。例如,输入“We are happy.”,则输出“We%20are%20happy.”。看到这个题目的时候我们首先想到的是,从前向后遍历,每找到一个空格就把这个空格替换成%20,但是空格只有一个字符,%20 有三个字符,这样替换的时候势必要将数组中的元素向后移动。而且有些字符还被不止移动一次,假设字符串长度是n,对每个空格字符,需...原创 2018-10-25 10:58:47 · 3210 阅读 · 0 评论 -
c++实现找数组中的重复数字+不改变数组的找重复数字的二分查找法
题目描述:找出数组中重复的数字在一个长度为n的数组中,所有数字都在0~n-1的范围内,数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次,请找出数组中任意一个重复数字,如输入长度为7的数组arr[]={2,3,1,0,2,5,3},那么对应输出是重复数字2,3分析:简单的方法就是对数组整个进行sort排序,然后for循环遍历数组,如果前后两个数相等那么这个数组就有重复...原创 2018-10-23 12:32:40 · 2410 阅读 · 0 评论 -
c++实现二维数组中的查找+二维数组作为函数参数的方法
题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样一个二维数组和一个整数,判断数组中是否含有该整数。分析:假设我们有 如下一个二维数组:2.我们在这个二维数组中查找7这个元素,首先从右上角开始找,显然,右上角的9是大于7的,那么就说明9这一列肯定就都是大于7的,我们就可以把这一列去除掉:3.再比较剩下的,找右上角...原创 2018-10-24 10:54:46 · 650 阅读 · 2 评论 -
c++实现已知二叉树的前序遍历结果和中序遍历结果,重建这个二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历结果{4,7,2,1,5,3,8,6},则重建二叉树并输出头节点。二叉树节点的定义如下:struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft;...原创 2018-10-31 14:44:42 · 3163 阅读 · 0 评论 -
c++实现合并两个无序数组并以从大到小的顺序排序
今天做了一下途游游戏的线上笔试题,题目中有一个是合并两个无序数组并排序(从大到小),在这里写一下我的思路,如果有更简单思路的大神请给我留言。我首先想到的一个思路就是把A和B先放在同一个数组里,在随便用一个排序算法对新数组进行排序,这个方法时间复杂度和空间复杂度应该很高,属于暴力解法,给出代码。#include<iostream>using namespace std;void ...原创 2018-10-24 20:42:31 · 3314 阅读 · 0 评论 -
c++实现关于链表问题的面试题(链表的基本操作+从尾到头打印链表+链表中倒数第k个节点)(一)
1.在链表的末尾添加一个节点://节点的定义struct ListNode{ int data; ListNode* next;};//插入节点void AddToTail(ListNode** pHead,int value){ ListNode* pNew=new ListNode(); pNew->data=value; pNew->next=nullptr;...原创 2018-10-30 14:30:16 · 238 阅读 · 0 评论