首页 > 其他分享 >c语言 复杂度为O(n)的有序数字字符的去重

c语言 复杂度为O(n)的有序数字字符的去重

时间:2024-05-10 14:46:54浏览次数:7  
标签:字符 arr int 复杂度 len mark ++ 有序 printf

 

#include <stdio.h>

int main() {
    // 有序列表的去重 
    int arr[] = {1,2,2,3,3,3,5,6,7,7,7,7,8,8,9,9,9};
    int len = sizeof(arr)/4;
    int mark[len] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    int k = 0;
    // 打印数组 
    printf("原始数组: ") ;
    for(int i = 0; i < len; i++) {
        printf("%d ",  arr[i]);
    }
    // 统计重复的数字,用k进行累加 
    // 也就是重复数字后面的不重复的数字应该向前移动多少位
    // 并保存到mark数组中 
    for(int i = 0; i < len; i++) {
        if (arr[i] == arr[i+1]) {
            k++;
        } else {
            mark[i] = k;
        }
    }
    // 开始去重 
    for(int i = 0; i < len; i++) {
        arr[i - mark[i]] = arr[i]; 
    }
    // 打印共有多少个重复数字 
    printf("\n");
    printf("重复数字k: %d个",  k);
    printf("\n",  k);
    printf("mark: ") ;
    // 打印mark 
    for(int i = 0; i < len; i++) {
        printf("%d ",  mark[i]);
    }
    printf("\n");
    // 打印已经去重的有序列表 
    printf("已去重的数组: ") ;
    for(int i = 0; i < len-k; i++) {
        printf("%d ",  arr[i]);
    }
    return 0;
} 

 

标签:字符,arr,int,复杂度,len,mark,++,有序,printf
From: https://www.cnblogs.com/hello-dummy/p/18184294

相关文章

  • 生僻字显示?的字符乱码解决
    现存储生僻汉字时,存为了?,分析后是varchar字段字符集不支持Unicode,使用的简体中文字符集。现改为nvarcahr类型即可。当需要存储生僻汉字时,使用nvarchar类型,该类型会存储Unicode字符数据的整个范围。而varchar仅会存储该排序规则的相应代码页支持的字符子集(当排序不是UTF-......
  • php使用mysql-text字段存取json字符串
    PHP保存时过滤掉双引号&单引号&tabfunctionformartJsonString($jsonString=''){ $jsonString=str_replace("'","",$jsonString); $jsonString=str_replace('\"',"",$jsonString); $jsonString=st......
  • 代码随想录训练营第二天 | 977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II
    977.有序数组的平方题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/文章讲解:https://programmercarl.com/0977.有序数组的平方.html视频讲解:https://www.bilibili.com/video/BV1QB4y1D7ep暴力解时间复杂度O(nlogn)空间复杂度O(1)双指针法时间复......
  • 字符串截取
    2024-05-10 11:14:48LOCATE(substr,str):返回子串substr在字符串str中第一次出现的位置,如果字符substr在字符串str中不存在,则返回0;POSITION(substrINstr):返回子串substr在字符串str中第一次出现的位置,如果字符substr在字符串str中不存在,与LOCATE函数作用相同;LEF......
  • Go语言:统计字符串相关的函数
    统计字符串相关的函数:(1)统计字符串的长度,按字节进行统计(注意:UTF-8编码是Go语言默认的字符编码,汉字通常占用3个字节。)len(str)备注:因为len是Go语言的内置函数,所以不需要导包,直接使用就可以了。 (2)字符串遍历方式一:利用键值循环:for-rangefori,value:=rangestr{f......
  • 代码随想录算法训练营第第二天 | 977.有序数组的平方 、27. 移除元素
    977.有序数组的平方题目建议:本题关键在于理解双指针思想题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/文章讲解:https://programmercarl.com/0977.有序数组的平方.html视频讲解:https://www.bilibili.com/video/BV1QB4y1D7ep/***@param{number[]}nu......
  • 力扣刷题笔记-21 合并两个有序链表
    其实不回答就是答案双指针classSolution{publicListNodemergeTwoLists(ListNodelist1,ListNodelist2){ListNodedummy=newListNode(-1);ListNodep=dummy;ListNodep1=list1,p2=list2;while(p1!=null&&p2!=nu......
  • 当字符遇上 scanf() 要当心
    当字符遇上scanf()要当心看一下程序charch1,ch2;printf("请输入ch1,ch2的值:");scanf("%c%c",&ch1,&ch2);printf("ch1=%c,ch2=%c\n",ch1,ch2);printf("请再次输入ch1的值:");scanf("%c",&ch1)......
  • python中7种方法实现字符串的拼接
    1.直接通过(+)操作符拼接>>>'Hello'+''+'World'+'!''HelloWorld!'使用这种方式进行字符串连接的操作效率低下,因为python中使用+拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。2.通过str.join()方法拼接......
  • 394. 字符串解码
    给定一个经过编码的字符串,返回它解码后的字符串。编码规则为:k[encoded_string],表示其中方括号内部的encoded_string正好重复k次。注意k保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始......