![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数组
Fight_Bro
这个作者很懒,什么都没留下…
展开
-
数组中数字出现的次数
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。解题思路本题使用C++需要运用异或的思路,暂时没有写出来。暂时使用Python解题,使用了字典的技巧。# -*- coding:utf-8 -*-class Solution: # 返回[a,b] 其中ab是出现一次的两个数字 def FindNumsAppearOnce...原创 2019-12-18 10:11:03 · 72 阅读 · 0 评论 -
数字在排序数组中出现的次数
题目描述统计一个数字在排序数组中出现的次数。解题思路1、循环扫描所有数组进行计数,时间复杂度为n,但是忽略了是排序的这一特性。2、使用二分查找的思想,关键判断为当当前数字等于k时,如果前一数字不等于k,则该处为第一次出现k的位置。判断最后一个K同理。C++class Solution {public: int GetNumberOfK(vector<int> da...原创 2019-12-17 18:14:40 · 101 阅读 · 0 评论 -
数组中的逆序对
题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007解题思路1、暴力解法,顺序扫描整个数组,如果碰到比他小的数字则计数加一,很显然这种算法的复杂度为n^2的,不适合。class Solution {public: int I...原创 2019-12-17 16:14:03 · 113 阅读 · 0 评论 -
把数组排成最小的数
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路为了避免大数问题(拼接起来的数字可能造成越界),将数字转化为字符串进行处理,自定义一个排序规则:若ab > ba 则 a 大于 b,若ab < ba 则 a 小于 b,若ab = ba 则...原创 2019-12-16 20:33:05 · 78 阅读 · 0 评论 -
连续子数组的最大和
题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列...原创 2019-12-16 11:47:17 · 118 阅读 · 0 评论 -
数组中出现次数超过一半的数字
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。算法思路法1: O(nlogn) 先排序,找到中位数,然后遍历一边确认是否满足要求。法2: O(n) 注意到目标数 超过数组长度的一半,对数组同时去掉两个不同的数字,到最后剩...原创 2019-12-15 11:39:25 · 139 阅读 · 0 评论 -
剑指offer(二维数组中的查找)
加油!每天至少一道算法题(包括C++、python解法)No.1:二维数组中的查找在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题关键点选择左下方或者右上方为起点进行判断,从而改变行列进行判断是否存在该整数。Python版本# -*- c...原创 2019-11-21 22:49:31 · 80 阅读 · 0 评论 -
剑指offer(旋转数组的最小数字)
旋转数组的最小数字把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解题思路解法1:最直观的想法就是从头到尾遍历一遍数组,就能找到最小的元素,但是时间复杂度是O(n...原创 2019-11-24 23:25:17 · 69 阅读 · 0 评论 -
剑指offer(数组中重复的数字)
数组中重复的数字在一个长度为n的数组里的所有数字都在0~n-1范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。解题思路1.把输入的数组进行排序,排序后再判断有无重复数字,时间复杂度为O(n*lgn)。2.使用哈希表来解决,从头...原创 2019-11-25 23:28:53 · 85 阅读 · 0 评论 -
剑指offer(调整数组顺序)
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路**1、暴力解法:**从前到位扫描数组,如果出现前面是偶数后面是奇数的情况,则交换。其中使用冒泡排序的思想。从后面朝前比较,使用外循环控制趟数。class Solution {public: voi...原创 2019-11-30 12:16:07 · 127 阅读 · 0 评论 -
剑指offer(查找)
循环数组的查找有一个循环有序数组A,如{7,8,9,0,1,2,3,4,5,6},不知道其最小值的位置。那么如何从这样的数组中寻找一个特定的元素呢?解题思路我们可以把循环数组分为两部分,其中必定有一部分是排好序的,比较元素的值,如果在排序数组中则直接进行二分查找即可,如果不在排好序的数组中,则递归的调用查找函数。#include <iostream>using namespa...原创 2019-12-05 15:20:26 · 86 阅读 · 0 评论