IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> C语言-----每日三题(提高你的编程能力) -> 正文阅读

[数据结构与算法]C语言-----每日三题(提高你的编程能力)

字符串最后一个单词的长度

计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)

题目链接—https://www.nowcoder.com/practice/8c949ea5f36f422594b306a2300315da?tpId=37&&tqId=21224

解题思路:从数组的最后一个字符开始统计遇到空格停止即可,但是有一个要注意的点,就是输入字符串的时候
scanf遇到空格就停止了。 所以这里我们要读取一行-------scanf("%[^\n]",arr);
看代码

#include<stdio.h>
#include<string.h>
int main()
{
    char arr[5000]={0};
    scanf("%[^\n]",arr);
    char* ret=arr+strlen(arr)-1;
    int count=0;
    while(*ret!=' ' && ret >= arr)
    {
       count++;
       ret--;
    }
     printf("%d\n",count);
     return 0;
}

字符个数统计

编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。

题目链接------https://www.nowcoder.com/practice/eb94f6a5b2ba49c6ac72d40b5ce95f50?tpId=37&&tqId=21233&rp=1&ru=/ta/huawei&qru=/ta/huawei/question-ranking

解题思路:
1先使用快排,这样相同的元素就集中在一起了
2然后开始遍历这个数组,两个元素不同就+1,这样加完以后,再加1就是数组元素的种类了

看代码

#include<stdio.h>
#include<string.h>
int cmp_char(const void* e1,const void* e2)
{ 
    return *(char*)e1-*(char*)e2;
}

int main()
{
    char arr[500]={0};
    scanf("%s",arr);
    int len=strlen(arr);
    qsort(arr,len,1,cmp_char);
    int i=0,count=0;
    for(i=0;i<len-1;i++)
    {
     if(arr[i]!=arr[i+1])
         count++;
    }
    printf("%d\n",count+1);
    return 0;
}

多数元素

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ? n/2 ? 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/majority-element

解题思路:
1.先用qsort快速排序一下数组,相同的元素就在一块了
2.然后用i,j两个下标为0开始统计,相同则j++,并开始统计
3不等然后j赋值给i,再重新统计
4比较重要的一点,题目说了一定存在,所以我们尽量在统计的时候+1就与n/2比较一下,
如果统计完了再比较,会出现一些不可预料的错误。

先看正确可通过的代码


int cmp_int(const void* e1,const void* e2)
{
    return *(int*)e1-*(int*)e2;
}

int majorityElement(int* nums, int numsSize)
{
    qsort(nums,numsSize,sizeof(int),cmp_int);
   int i=0,j=0,count=0;
   while(i<numsSize && j<numsSize)
   {
     int count =0;
     while(nums[i]==nums[j] )
     {
         count++;
         if(count>numsSize/2)
           goto test;
         j++;
     }
       i=j;
   }
   test:
      return nums[i];
}

如果你统计完再比较,就会出现错误
例如这个不通过的代码


int cmp_int(const void* e1,const void* e2)
{
    return *(int*)e1-*(int*)e2;
}

int majorityElement(int* nums, int numsSize)
{
    qsort(nums,numsSize,sizeof(int),cmp_int);
   int i=0,j=0,count=0;
   while(i<numsSize && j<numsSize)
   {
     int count =0;
     while(nums[i]==nums[j]&&j<numsSize) //这里避免了数组越界,但仍旧不通过
     {
         count++;
         j++;
     }
      if(count>numsSize/2)
           goto test;
       i=j;
   }
   test:
      return nums[i];
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 13:22:01  更:2022-03-06 13:25:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 13:46:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码