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 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 小陈的刷题日记 -> 正文阅读

[数据结构与算法]小陈的刷题日记

牛客网-------HJ11 数字颠倒

题目描述:输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001

解题思路:
1 模10,输出,除10就可以了
2特殊情况:0的时候要特别处理一下

这一题比较简单,看看代码

#include<stdio.h>
int main()
{
    int n=0;
    scanf("%d",&n);
    if(n==0)
        printf("%d",0);
    while(n)
    {
       printf("%d",n%10);
       n=n/10;
    }
    return 0;
}

力扣-------27. 移除元素

题目描述:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
说明:
为什么返回数值是整数,但输出的答案是数组呢?
请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。

解题思路:
用双指针i,j,同时从下标为0的位置开始,
不等于val的值就赋值 nums[j]=nums[i],
如果等于val就i++。


int removeElement(int* nums, int numsSize, int val)
{
   int i=0,j=0,count=0;
   while(i<numsSize)
   {
       //这里的while和下一个条件一定要加上小于numsSizz
       //不然一定会出现数组越界的情况
       while(i<numsSize && nums[i]!=val)  
       {
           nums[j++]=nums[i++];
           count++;
       }
       while(i<numsSize && nums[i]==val)
       i++;
   }
   return count;
}

力扣-----189. 轮转数组

题目描述:给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数
解题思路:
1这个和字符串的左旋和右旋一样。
2这里我推荐用三步旋转法。时间复杂度O(n),空间复杂度O(1).
3右旋k个字符,先把前面n-k个字符逆置,再你只后面的k个字符,最后整体逆置就是目标了

看代码

void reverse(int* arr,int left,int right)
{
    assert(arr);
    while(left<right)
    {
        int tmp=arr[left];
        arr[left]=arr[right];
        arr[right]=tmp;
        left++;
        right--;
    }
}

void rotate(int* nums, int numsSize, int k)
{
    //这里的k如果就是旋转numsSize个字符呢?
   k=k%numsSize;
   reverse(nums,0,numsSize-k-1);
   reverse(nums,numsSize-k,numsSize-1);
   reverse(nums,0,numsSize-1);
}

牛客网-------HJ31 单词倒排

题目描述:
对字符串中的所有单词进行倒排。
说明:
1、构成单词的字符只有26个大写或小写英文字母;
2、非构成单词的字符均视为单词间隔符;
3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
4、每个单词最长20个字母;

解题思路:
1,从后向前遍历数组
2,记录下是字母的下标pos1,然后继续向前,与到不是字母停下pos2.
3,然后从pos2+1到pos1打印即可,不要忘了打印个空格

看代码

#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
    char arr[10000]={0};
    //这里输入会出现空格,要注意一下
    scanf("%[^\n]",arr);
    int i=strlen(arr)-1;
    int j=0;
    while(i>=0)
    {
     while(i>=0 && !isalpha(arr[i]))
         i--;
        j=i;
        while(i>=0 && isalpha(arr[i]))
            i--;
        int m=0;
        for(m=i+1;m<=j;m++)
            printf("%c",arr[m]);
        printf(" ");
    }
    return 0;
}

牛客网----HJ56 完全数计算

题目描述:
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。
它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。

题目真的很简单,就不写解题过程了
看看代码:

#include<stdio.h>
#include<math.h>
int perfectnumber(int n)
{
   int i=0,sum=1;
   for(i=2;i<=sqrt(n);i++)
   {
     if(n%i==0)
     {
       sum=sum+i;
       if(i!=sqrt(n))
       {
           sum+=n/i;
       }
     }
   }
    if(sum==n)
        return 1;
    else
        return 0;
}

int main()
{
    int n=0;
    scanf("%d",&n);
    int i=0,count=0;
    for(i=2;i<n;i++)
    {
     if(perfectnumber(i))
         count++;
    }
    printf("%d\n",count);
    return 0;
}

力扣485-----最大连续1的个数

给定一个二进制数组 nums , 计算其中最大连续 1 的个数。

题目简单,就不说了

int findMaxConsecutiveOnes(int* nums, int numsSize)
{
    int i=0,j=0,max=0;
    while(i<numsSize)
    {
        int count=0;
        while(i<numsSize && nums[i]!=1)
        i++;
        while(i<numsSize && nums[i]==1)
        {
           count++;
           i++;
        }
        if(count>max)
        max=count;
    }
    return max;
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:50:47  更:2022-03-10 22:51:09 
 
开发: 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:51:16-

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