Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C 语言的 LeetCode 30 天挑战 第1部分,共10部分

C 语言的 LeetCode 30 天挑战 第1部分,共10部分

原创
作者头像
笃信好学
发布于 2023-04-09 08:31:35
发布于 2023-04-09 08:31:35
40702
代码可运行
举报
文章被收录于专栏:笃信好学笃信好学
运行总次数:2
代码可运行

网上找了视频,LeetCode 30 天挑战,用c语言写,记录一下,一共30个leetcode 算法题 对应30天,大概需要写10篇,每篇3道题,手打下代码,外加记录一下。

第一天 single number

题目如下》 找到数组里面的唯一出现一次的数

single number 题目
single number 题目
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 只要知道了 位运算的 异或 就很简单, 异或是指两个位相同为0,相异为1。 两个相同数进行异或就是0.
int singleNumber(int* nums, int numsSize){
    int result=0;
    for(int i=0;i<numsSize;i++)
    {
        result ^= nums[i];
    }
    return result;
}
位运算
位运算

该up主 提到在线执行代码的网站 Replit。

第二天 Happy Number

判断是不是happy number,一个数的每位平方相加得到另一个数,继续平方相加,如此循环,如果最后得到1就是happy number。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//实际动手写确实不一样,包括两部分,第一部分是求平方和,第二部分是while判断,把已经算过的数存入数组,
//完成空间换取时间
int sum_of_squares(int val)
{
    int q,r,result=0;
    do
    {
        q=val/10;
        r=val%10;
        result+=r*r;
        val=q;
    }
    while(q>=10);
    result+=q*q;   
    return result;
}
bool isHappy(int n){     
    bool exist[810]={false};
    int result=n;
    while(result!=1)
    {
        result=sum_of_squares(result);
        if(exist[result]==true ){
            return false;
        }
        else{
            exist[result]=true;
        }       
    }
    return true;
}
上面代码的performance
上面代码的performance
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//平方和的代码也可以优化一下
int sum_of_squares(int val)
{
    int q,r,result=0;
    do
    {
        q=val/10;
        r=val%10;
        result+=r*r;
        val=q;
    }
    while(q>0);
    return result;
}

另一种解法 Floyd‘scycle-findingalgorithm 核心 代替存储

乌龟和兔子,乌龟走1格,兔子走2格,迟早会相遇
乌龟和兔子,乌龟走1格,兔子走2格,迟早会相遇
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//乌龟兔子代码
int sum_of_squares(int val)
{
    int q,r,result=0;
    do
    {
        q=val/10;
        r=val%10;
        result+=r*r;
        val=q;
    }
    while(q>0);
    return result;
}
bool isHappy(int n){        
    int turtle=n;
    int rabbit=n;
    while(rabbit!=1)
    {       
        turtle=sum_of_squares(turtle);
        rabbit=sum_of_squares(rabbit);
        rabbit=sum_of_squares(rabbit);
        if(turtle==rabbit && rabbit!=1) return false;
    }
    return true;
}
上面代码表现
上面代码表现
up主的写法更简洁
up主的写法更简洁
补充 int i, j = 1; i 被定义了吗?
补充 int i, j = 1; i 被定义了吗?

第三题 Maximum Subarray

找到数组中最大的和

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//两层嵌套也Time Limit Exceeded??
int maxSubArray(int* nums, int numsSize){
int max=nums[0];
for(int i=0;i<numsSize;i++)
{
    int sum=0;
    for(int j=i;j<numsSize;j++)
    {
        sum+=nums[j];
        if(max<sum){
            max=sum;
        }  
    }
}
return max;
}

另外一个写法是动态规划,以后再学。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
leetcode-202-Happy Number
题目描述: Write an algorithm to determine if a number is "happy". A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the numb
chenjx85
2018/05/21
6060
【LeetCode 202】 关关的刷题日记35 – Leetcode 202. Happy Number
关关的刷题日记35 – Leetcode 202. Happy Number 题目 Write an algorithm to determine if a number is "happy". A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, a
WZEARW
2018/04/10
6230
LeetCode202 Happy Number
Write an algorithm to determine if a number is “happy”.
用户1665735
2019/02/19
4480
LeetCode算法(二)
自评:需要先将每个罗马数字代表的数字保存起来。循环提取每一个罗马数字。因为不同的位置会有不同的做法,所以记录之前罗马数字的值,如果比上一次加的值大,则本次减去2倍的该值。
万能青年
2019/08/30
4410
LeetCode 202: 快乐数 Happy Number
一个 “快乐数” 定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。
爱写bug
2019/10/12
1K0
leetCode191/201/202/136 -Number of 1 Bits/Bitwise AND of Numbers Range/Happy Number/Single Number「建议
Write a function that takes an unsigned integer and returns the number of ’1′ bits it has (also known as the Hamming weight).
全栈程序员站长
2022/07/11
1600
C#版(打败97.89%的提交) - Leetcode 202. 快乐数 - 题解
Leetcode 202.Happy Number 在线提交: https://leetcode-cn.com/problems/happy-number/ 或 LintCode 488 https://www.lintcode.com/problem/happy-number/
Enjoy233
2019/03/05
4340
【leetcode刷题】T42-快乐数
Write an algorithm to determine if a number is "happy".
木又AI帮
2019/07/17
5110
C 语言的 LeetCode 30 天挑战 第2部分,共10部分
网上找了视频,LeetCode 30 天挑战,用c语言写,记录一下,一共30个leetcode 算法题 对应30天,大概需要写10篇,每篇3道题,手打下代码,外加记录一下。
笃信好学
2023/04/13
3540
C 语言的 LeetCode 30 天挑战 第3部分,共10部分
网上找了视频,LeetCode 30 天挑战,用c语言写,记录一下,一共30个leetcode 算法题 对应30天,大概需要写10篇,每篇3道题,手打下代码,外加记录一下。
笃信好学
2023/04/15
2900
LeetCode通关:哈希表六连,这个还真有点简单
就好像老三和老三的工位:有人来找老三,前台小姐姐一指,那个像狗窝一样的就是老三的工位。
三分恶
2021/08/13
3510
LeetCode通关:哈希表六连,这个还真有点简单
链表、DFS-LeetCode 216、213、148、202(链表归并排序,组合数问题)
找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。
算法工程师之路
2019/11/14
5370
LeetCode笔记:202. Happy Number
一看到这个题目我是懵逼的,看一个数字是不是happy,出题人真有童心。想找规律吧算了几个数字感觉没得规律找啊。从最简单的思路来看就是不断循环看最后得到的是不是1了,但是返回true的判断容易,什么时候就可以下结论说这个数字不happy呢?这才是问题。首先我们得到的数不知道是几位数,但是经过计算后最后肯定会变成个位数,而如果这个个位数是1那就是happy了,如果不是1应该就是不happy吧。所以我一开始的做法是循环求平方和,直到结果是个位数了就看是不是1来给出结果,这里还用到了一个递归,如果计算一次平方和还不是个位数就继续递归计算。 提交后发现有个错误,那就是1111111这个数,也是一个happy数字,但我判断为不是了。我数了一下一共七个1,平方和是7,才知道原来到了个位数后还会继续计算,我算了一下发现7还真能最后算出1来,那只能对于1~9九个个位数都看看是不是能算出1来了,算了一下觉得太麻烦了,于是想到了一个简单的方法,leetcode是可以自定义测试用例的,勾选Custom Testcase就可以了,然后我把4~9都试了一遍,不用试2、3是因为就等于4、9,测完发现只有1和7是的,所以在代码里把7也算成true就可以了。 最后的时间是4ms,还不错,看了看discuss也没有看到特别好的方法,那大抵就是这样了吧。
Cloudox
2021/11/23
1960
【力扣算法题】双指针-战场上的矛与盾的组合(移动零)&(快乐数)
本题目像这种一般都是使用的双指针的算法,一般就是设置三个区间,左边就是处理过没有0的区间,中间全部都是零,然后右边就是没有处理的数字
用户11288949
2024/11/26
1090
【力扣算法题】双指针-战场上的矛与盾的组合(移动零)&(快乐数)
LeetCode题解——数组篇
输入:n = 3 输出:[[1,2,3],[8,9,4],[7,6,5]] 示例 2: 输入:n = 1 输出:[[1]]
小点点
2022/12/12
3460
LeetCode题解——数组篇
LeetCode---消失的数字---C语言实现
数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。
小李很执着
2024/06/15
750
力扣(LeetCode)刷题,简单题(第4期)
力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。
不脱发的程序猿
2021/01/20
2450
力扣(LeetCode)刷题,简单题(第14期)
力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。
不脱发的程序猿
2021/01/20
3320
《算法和数据结构》算法零基础五十题讲解[通俗易懂]
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说《算法和数据结构》算法零基础五十题讲解[通俗易懂],希望能够帮助大家进步!!!
Java架构师必看
2022/07/29
5750
《算法和数据结构》算法零基础五十题讲解[通俗易懂]
力扣(LeetCode)刷题,简单题(第2期)
力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。
不脱发的程序猿
2021/01/20
2580
推荐阅读
相关推荐
leetcode-202-Happy Number
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验