来刷题啊

  • 小问题
  • 1.简单题3道:
    • 1.1  num1:两数之和(1)
      • 暴力题解:
      • 哈希表解法
    • 1.2  num2:整数反转(7)
    • 1.3  num3:回文数(9)
  • 2.心路历程(2021.8.2)

小问题

哈希表解决两数之和尚待解决
回文数自己写的bug暂时为解决

1.简单题3道:

1.1  num1:两数之和(1)

 题目链接:两数之和

暴力题解:

此才为正解啊:

/*** Note: The returned array must be malloced, assume caller calls free().*/
int* twoSum(int* nums, int numsSize, int target, int* returnSize)
{   int i,j;int *a=(int*)malloc(sizeof(int)*2);for(i=0;i<numsSize;i++){for(j=i+1;j<numsSize;j++){if(nums[i]+nums[j]==target){a[0]=i;a[1]=j;*returnSize=2;return a;}}}*returnSize=0;return NULL;
}
使用两个for循环,可看作使用双指针,时间复杂度O(n^2)

 做错了~,已修改:(请慎用,防止跑偏)

/*** Note: The returned array must be malloced, assume caller calls free().*/
int* twoSum(int* nums, int numsSize, int target, int* returnSize)
{int i,j,x=0;//找出i,jfor(i=0;i<numsSize-1;i++){for(j=i+1;j<numsSize;j++){if(nums[i]+nums[j]==target){/* 第一版:⭐1returnSize[0]=i;returnSize[1]=j;return returnSize;*///第二版:int *a=(int*)malloc(sizeof(int)*2);a[0]=i;a[1]=j;*returnSize=2;x=1;break;}}//三目运算⭐2//x==1?break:continue;if(x)break;}//讲存有下标i,j的值返回⭐3if(x)return a;else{*returnSize=0;return NULL;}
}

⭐1指针与指针数组
1.1returnSize类型为指针类型,而非指针数组不能那样使用
1.2而且returnSize为返回的个数,可能为0、2,而非让他返回两个i,j
⭐2三目运算:
2.1三目运算符为赋值运算符,而不是单纯的一条语句,形如:c = a>b? a:b;
⭐3作用域
3.1不一定非要结束循环,才返回值,显得很冗余
3.2而且变量有作用范围,a变量的作用域是局部变量,不能脱离作用范围使用,可以把他写到函数的第一个作用域中

哈希表解法

下边的可不对啊,(哈希表刚刚了解了一部分,暂时只能写到这儿,有哈希冲突,之后再重新补充吧,勇敢牛牛,不怕bug)

/*** Note: The returned array must be malloced, assume caller calls free().*/struct kvalue {int key;int value;}Kvalue;
struct kvalue a[10000];
int* twoSum(int* nums, int numsSize, int target, int* returnSize)
{   int i,t,k;for(i=0;i<numsSize;i++){t=target-nums[i];if(a[t].key==t){*returnSize=2;int *ret=(int*)malloc(sizeof(int)*2);ret[1]=i,ret[0]=a[t].value;return ret;}else{ k=nums[i];a[k].key=nums[i];a[k].value=i;}  }*returnSize=0;return NULL;
}

1.2  num2:整数反转(7)

题目链接:整数反转

坎坎坷坷,头大,一句话终于点醒我,终于终于明白了!!!开心开心。想法真的不要太赞吧,学习学习学习

优秀代码奉上(所谓的“短小精悍”)

int reverse(int x){int z,s=0;while(x){z=x%10;x/=10;if(s<INT_MIN/10||s>INT_MAX/10)return 0;s=s*10+z;}return s;
}

困惑解决啦!!
1.INT_MIN ,INT_MAX

#include <limits.h>用于C或C++中,常量INT_MIN INT_MAX分别表示最小、最大
INT_MAX = 2^31-1=2147483647;
INT_MIN= -2^31=-2147483648;
注意:在C/C++语言中,不能够直接使用-2147483648来代替最小负数,因为这不是一个数字,而是一个表达式。表达式的意思是对整数21473648取负,但是2147483648已经溢出了int的上限。

2.if (s<INT_MIN/10||s>INT_MAX/10)

(这条语句折磨我好苦),解决溢出问题的精髓啊
在一些语言中,当数据过大发生溢出时会报错,而这条语句很好的避免了这一情况的发生
if (s<INT_MIN/10||s>INT_MAX/10)它通过提前判断,来看即将运算的语句是否会发生溢出

3.负数无需单独考虑

负数情况在本题中,取反变成正数,实在多余,因为负数做取余运算,最后的符号和左操作数保持一致

4.取反进阶操作

不堪的回首:害,现在看自己用的方法好”亲民“(hh):正常的取余,做商,当时没反应过来不能像蹦豆子是的,一个一个输出数(这样也太简单了吧),后来发觉后,采取的是将每个数保存到数组中,再循环数组并依次乘以10的多少次(还得用循环),烦烦烦,而且还不能判断溢出
我懂了,真是妙啊:反转的时候,只需两步,搞定。第一:弹出x的末尾数字digit,digit=x%10; x/=10;;第二:推入reverse=reverse*10+digit;

5.些许小知识点

当数据大于最大范围时,数据只是客观上增大,实际已经不会发生变化了

不堪的回首:(错误示例,可当找bug食用,剂量较大慎用)

//问题对应步骤4
int reverse(int x){int y=x<0?-x:x;int i=0,yu,k,s=0;int sum[32];while(y){sum[i]=y%10;i++;y/=10;}for(k=0;k<i;k++){s+=sum[k]*fun(k,i);}
}
int fun(int j,int i)
{int k,s=1;for(k=0;k<i-1-j;k++)s*=10;return s;
}
/*这个方法也是进行比较, 反转值每次更新后除10,然后跟上一次的反转值比较一下,
如果不相等,就是溢出,不适用于当溢出就报错的语言
(既然能想到这儿,就可以再进一步,它最后的会有溢出情况,
那他上一次是不是没发生溢出,那又怎么求上一次,就解决这个问题了)*/
int reverse(int x){int y=x<0?-x:x;int s=0,s1,z;while(y){z=y%10;y/=10;s1=s;s=s*10+z;//if(z!=0&&s1==s)if(s1!=s/10)return 0;}if(x<0)s=-s;return s;}

1.3  num3:回文数(9)

题目链接:回文数

高配版,高配不是没有道理的啊:

bool isPalindrome(int x)
{   if(x<0||x>0&&x%10==0)//x>0&&x%10==0,没有这条语句时,无法约束10的倍数的return false;int rev=0;while(x>rev){rev=rev*10+x%10;x/=10;}if(x==rev||x==rev/10)return true;elsereturn false;
}

要升级:
1.回文数的两种方法:

  • 例如12321,可以获得倒叙读取的数与原来的数进行比较,但一定要注意数据是否会发生溢出现象(低配版)
  • 既然是判断回文,那就可以从左到右读到中间数时,与倒叙读到的中间时的数进行比较,优点:不用判断数据溢出情况,不用循环到最后

应该是低配版吧,看了解析果然是低配,害,学习的道路永不停止hhh:

bool isPalindrome(int x){int rev=0,yu,y=x;if(x<0)return false;else{while(x){yu=x%10;x/=10;if(rev<INT_MIN/10||rev>INT_MAX/10)return false;rev=rev*10+yu;}if(rev==y)return true;elsereturn false;}
}

勿看:bug,你能不能不要不请自来啊,你又一次的来了,

力扣刷题1、7、9(小小白亲测,Bug你准没我的多,hhh)相关推荐

  1. 教你创建电脑、手机同步的markdown云笔记--力扣刷题力荐!

    开篇先致歉 其他不谈,开篇必须先给各位读者道个歉,年后工作上比较忙,加上最近闲暇的时间都用来在力扣上刷算法题了,导致公众号断更有些严重啊.再加上年后将健身减重提上了日程,时间上就更显的捉襟见肘了. 不 ...

  2. 《剑指Offer》力扣刷题笔记(03-10)

    <剑指Offer>力扣刷题笔记(03-10) 最近确实有点闲,想在进组搬砖之前找点有意义的事干,于是,就开始刷<剑指Offer>.<程序员面试金典>等书上的题目,也 ...

  3. 力扣刷题之二叉树的层序遍历

                                                      Welcome to you, 每日一刷系列 二叉树的层序遍历 二叉树的层序遍历II 二叉树的右视图 ...

  4. 『力扣刷题』5275_找出井字棋的获胜者 解题代码

    LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5275_找出井字棋的获胜者 * 5275. 找出井字棋的获胜者 显示英文描述* 用户通过次数0* 用户尝试次数0* ...

  5. 『力扣刷题』5276_不浪费原料的汉堡制作方案 解题代码

    LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5276_不浪费原料的汉堡制作方案 * 5276. 不浪费原料的汉堡制作方案 显示英文描述* 用户通过次数212* 用 ...

  6. 『力扣刷题』5238_找出给定方程的正整数解 解题代码

    html: embed_local_images: true embed_svg: true offline: true toc: undefined print_background: false ...

  7. 力扣刷题全局变量WA,局部变量AC的问题

    力扣刷题全局变量WA,局部变量AC问题 题目 原因 题目 golang力扣leetcode 1219.黄金矿工 原因 今天在刷题的时候,遇到一个现象,本地跑测试全部通过,一提交就错错错,非常离谱 然后 ...

  8. 力扣刷题pdf(java版本,内含暗黑版和光明版),都在这里了

    BAT大佬力扣刷题pdf,都在这里了! ​相信很多小伙伴刷题的时候面对力扣上近两千道题目,感觉无从下手! 我找了很久,今天终于让找到了Java版leetcode算法题解笔记,强烈建议先按照本篇介绍pd ...

  9. 力扣刷题-前k个高频元素

    力扣刷题-前k个高频元素 题目: 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. 示例 1: 输入: nums = [1,1,1,2 ...

  10. 力扣刷题记录--哈希表相关题目

    当遇到需要快速判断一个元素是否出现在集合里面的时候,可以考虑哈希法,牺牲一定的空间换取查找的时间. java常用的哈希表有HashMap.HashSet以及用数组去模拟哈希,这几种方法各有优劣. 数组 ...

最新文章

  1. sqlserver 与 mysql 联合更新两个表 区别
  2. htmlspecialchars() improvements in PHP 5.4
  3. POJ2955Brackets[区间DP]
  4. linux nacos启动_nacos初体验-踩坑与填坑篇
  5. DIV+CSS中标签ul ol li dl dt dd用法
  6. ACP-PMP答题技巧
  7. MySQL主从复制原理应用基础
  8. MyEclipse配置Tomcat(图解)
  9. 85岁院士的新年浪漫:这大概是最美好的爱情
  10. linux上的中国象棋游戏下载,中国象棋下载_中国象棋最新下载_玩一玩游戏
  11. Serverless 实战 —— 快速搭建 SpringBoot 应用
  12. java arraydeque poll,Java ArrayDeque pollLast()方法
  13. MVG 为 SGS 提供汽车天线测量和 OTA 测试设备
  14. weblogic安装(win10)
  15. matlab中使用ode45来解热水冷却问题一阶微分方程
  16. Android手机应用开发之手机GPS定位
  17. cpolar+ipad+windows远程桌面控制
  18. python dataframe删除重复行_2.3.10 DataFrame 查看删除重复项
  19. 解决:java.sql.SQLException:Value ‘0000-00-00‘ can not be represented as java.sql.Date
  20. 专注于速度的公司对混乱一无所知

热门文章

  1. webm转mp4 python实现
  2. wIN 7 一键清理垃圾
  3. 水星mw310r虚拟服务器,水星MW310R(V1-V4)路由器桥接设置教程 | 192路由网
  4. grunt从入门到自定义项目模板
  5. uniapp保存图片_uni-app项目保存图片到相册
  6. 安排几款实用的内网穿透工具(加教程)
  7. 如何把Windows10打造成Mac
  8. oppoa57升级android版本,OPPO A57刷机教程_OPPO A57升级更新官方系统包
  9. 计算机python实验报告_Python实验报告六:函数
  10. [codeforces 1341B] Nastya and Door 神奇的掐头去尾+前缀和