美文网首页
消除重复数字

消除重复数字

作者: 執著我們的執著 | 来源:发表于2018-08-20 15:25 被阅读0次
[华为编程题]消除重复数字
  • 时间限制:3s
  • 空间限制:32768K
  • 题目描述:
    给定一个正整数,给出消除重复数字以后最大的整数
  • 输入描述:
    正整数,注意考虑长整数
    输出描述:
    消除重复数字以后的最大整数
  • 示例
    输入:423234
    输出:432

分析
  • 注意考虑长整数,空间限制为32768K,提示我们只能利用数字字符串来实现
  • 可以视为双指针问题:
    指针i,j 从数字字符串的首地址开始遍历,j作为查重的指针(在 [0,i] 之间的字符子串)
    如果出现重复数字,即str[j] = str[i],那么根据题目要求,是消除重复数字以后的最大整数,就要做一个比较,判断是移除i位置的数字还是j位置的数字,如果str[j+1] > str[j],应该移除j位置的重复数字,否则移除i位置的重复数字以保证局部最大整数(这里当然包括使用什么样的结构体,在移除数据时可以迅速恢复)

举个图例


伪代码:
for (int i = 0; i<len; i++)
   for (int j = 0; j < i; j++)
   {
       if (a[i] == a[j])
       {
           if (a[j+1] > a[j])
           {
               移除 j 位置数字;
               i --;        // i 回退
               break;
           }
           else
           {
               移除 i 位置数字;
               i --;        // i 回退
               break;
           }
       }
   }

以上,可以采用双向链表的结构存储数字



实现完整Code

#include <iostream>
#include <string>
using name space std;

int main()
{
    string s;
    while(cin>>s)
    {
        1. 数字字符串合法性检查
        
        2. 
        string res;
        res = s[0];
        for (int i = 1; i < s.size(); i++)
        {
            if (res.find(s[i]) == string :: npos)
            {
                res + = s[i];
            }
            else
            {
                int t = res.find(s[i]);
                if ((t+1) < res.size())
                {
                    if (res[t] < res[t+1])
                    {
                        res.erase(t, 1);          // 移走并且调整
                        res + = s[i];
                    }
                }
            }
        }
        cout<< res <<endl;
    }
    return 0;
}

相关文章

  • 消除重复数字

    [华为编程题]消除重复数字 时间限制:3s 空间限制:32768K 题目描述:给定一个正整数,给出消除重复数字以后...

  • CodeFoeces-978A

    题目 原题链接:A. Remove Duplicates 题意 给出有n个数字的序列,要求从右开始消除重复的数字,...

  • 消除重复项

    题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额...

  • 【MYSQL】统计分组中不重复的字段数量

    从结果集中消除重复记录 使用DISTINCT关键字即可从结果集中消除重复记录。 查询结果

  • 如何优雅消除重复代码

    如何优雅消除重复代码 在消除重复代码之前,我们首先要考虑重复代码的特性是什么。有的同学会说,重复代码不就是一模一样...

  • 消除重复元素

    问题描述 小易有一个长度为n序列,小易想移除掉里面的重复元素,但是小易想是对于每种元素保留最后出现的那个。小易遇到...

  • 消除贴图重复感

    搬砖----解决贴图重复 参考自巨佬iq的文章,文章用两种方法消除了贴图重复问题。本文在unity里实现了第一种。...

  • 剑指offer4J【C2 P3】找出数组中重复数字

    题目 找出数组中重复的数字数组中数字都在0~n之间,其中有些数字是重复的,但不知道谁重复,可能有1到多个重复的数字...

  • 1012. 至少有 1 位重复的数字【数位DP】

    分析:1、题目需要求数字N有多少个重复的数字,可以将其转换为求数字N有多少个不重复的数字,因为求不重复的数字可以更...

  • 缺失数字、重复数字

    问题:1个数字只出现1次,其余数字都出现2次。方法:XORLeetcode 136[https://leetcod...

网友评论

      本文标题:消除重复数字

      本文链接:https://www.haomeiwen.com/subject/eubkiftx.html