【LC_Overview1_5】---学会总结回顾
刷LeetCode题目一周,主要采用C++和Python编程手段,截至目前做了5道简单的leetcode题目,做下阶段性的小结:
小结主要通过手撕代码,复习加回顾,尽量避免自己眼高手低的情况发生,对于自己还不熟悉的内容,再次标注出来吗,以下是手撕代码的记录:
Python实现:
第二遍编程中出现的问题和不熟的地方,都已标注出来,着重复习,
class Solution:
"""
注意:
1. Python预研在处理负数时,最好将其转换成正数,然后最后把结果乘-1
2. 学到了一种赋值+判断的写代码方式
"""
def ReverseNum(self,num:int)->int:
rev = 0;
temp:int = num if num>0 else -num
while (temp):
pop = temp%10
rev = rev*10 + pop
temp = temp//10 INT_MAX = pow(2,31)-1
INT_MIN = pow(2,31)*(-1) if num > 0:
if rev > INT_MAX:
return 0
else:
if (-rev) < INT_MIN:
return 0
return rev if num>0 else -rev """
注意:
无
"""
def isPalindrome(self,num:int)->bool:
if num < 0:
return False
rev = 0
temp = num
INT_MAX = pow(2,31)-1
while(temp):
pop = temp%10
rev = rev*10 + pop
temp = temp//10 if (rev != num):
return False
return True """
注意:
1. 当长度为1的时候,for循环中的算法将不起作用
2. python的字符串没有最后的'\0',因此一定要考虑最后一个越界的影响
"""
def romanToNum(self,strs)->int:
table = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'m':1000} if (len(strs) == 1):
return table[strs[0]]
rev = 0
for i in range(len(strs)-1):
if table[strs[i]] < table[strs[i+1]]:
rev -= table[strs[i]]
else:
rev += table[strs[i]]
return (rev + table[strs[i+1]]) """
注意:
当输入为空列表时,需要第一个if判断
当输入列表含有空字串时,则需要return时判断i的值是否大于0
"""
def longestCommonPrefix(self, strs)->str:
if len(strs)==0:
return "" for i in range(len(strs[0])):
for j in range(1,len(strs)):
if i>=len(strs[j]) or strs[0][i] != strs[j][i]:
return strs[0][0:i] if i>0 else ""
return strs[0]
C++实现
class Solution{
public:
int ReverseNum(int num);
bool isPalindrome(int num);
int RomanToNum(string RomanStr);
string longestCommonPrefix(vector<string> &strs);
};
int Solution::ReverseNum(int num)
{
long long rev = ;
int temp = num;
while(temp)
{
int pop = temp%;
rev = rev* + pop;
temp = temp/;
if(rev < INT_MIN || rev > INT_MAX)
{
return ;
}
}
return rev;
};
/*
注意:
1. 数据在发生反转的时候,一定要考虑溢出的情况,C++中可以采用更宽字节类型的变量来暂存结果,python可能需要溢出
*/
bool Solution::isPalindrome(int num)
{
if (num < ){
return false;
}
long long rev = ;
int temp = num;
while(temp)
{
int pop = temp%;
rev = rev* + pop;
temp /= ;
}
if (num != rev)
return false;
return true;
};
/*
注意:
1. 再次重温了下map的使用方式
*/
int Solution::RomanToNum(string RomanStr)
{
int rev = ;
if (RomanStr.empty())
return ;
map<char,int> table = {
{'I',},
{'V',},
{'X',},
{'L',},
{'C',},
{'D',},
{'M',}
};
int length =RomanStr.size();
for(int index=; index<length; index++)
{
if(table[RomanStr[index]] < table[RomanStr[index+]])
{
rev += (-) * table[RomanStr[index]];
continue;
}
rev += table[RomanStr[index]];
}
return rev;
};
/*
注意:
1. vector的使用方法
2. substr的使用方法
3. C++中对于字串返回可以直接返回""",不像python要注意返回空字串和空列表的区别
*/
string Solution::longestCommonPrefix(vector<string> &strs)
{
if (strs.size()== || strs[].size()==)
{
return "";
}
for(int i=; i<strs[].size(); i++)
{
for(int j=; j<strs.size(); j++)
{
if (strs[][i] != strs[j][i]){
return strs[].substr(,i);
}
}
}
return strs[];
}
【LC_Overview1_5】---学会总结回顾的更多相关文章
- [C#] C# 知识回顾 - 学会处理异常
学会处理异常 你可以使用 try 块来对你觉得可能会出现异常的代码进行分区. 其中,与之关联的 catch 块可用于处理任何异常情况. 一个包含代码的 finally 块,无论 try 块中是否在运行 ...
- [C#] C# 知识回顾 - 学会使用异常
学会使用异常 在 C# 中,程序中在运行时出现的错误,会不断在程序中进行传播,这种机制称为“异常”. 异常通常由错误的代码引发,并由能够更正错误的代码进行 catch. 异常可由 .NET 的 CLR ...
- 技术|程序员必须要学会Google搜索技巧
程序员必须要学会Google搜索技巧 摘要: 因为Google在我天朝被墙,学FQ请通过Bing进行搜索如何FQGoogle搜索技巧我曾经多次劝我的另一个朋友花10分钟学习一下Google通配符的使用 ...
- 2015.12.29~2015.12.30真题回顾!-- HTML5学堂
2015.12.29~2015.12.30真题回顾!-- HTML5学堂 吃饭,能够解决饥饿,提供身体运作机能.练习就像吃饭,强壮自己,提升编程技能,寻求编程技巧的最佳捷径!吃饭不能停,练习同样不能停 ...
- [原创]AHA大会回顾
AHA大会回顾 缘起 AHA之前参加了Daniel的培训,了解到AHA大会,觉得很高大上,开始有些心动.考虑到是工作时间,而且是外地,所以也就停留在心动层面了.之后与伯薇和四正吃饭,听说他们要去参加这 ...
- FMDB 二次封装工具类,让你快速学会封装,集成数据库
来源:StrivEver 链接:http://www.jianshu.com/p/4c77aee0b41c 上个版本为了增加用户体验,部分页面集成了离线缓存数据功能,于是就在项目里使用了数据库管理离线 ...
- 学会Func
学会Func 前言 首先你要会最基本的委托的使用,如果不会,看起来可能会有难度.. 不过第一个例子将帮你复习一下委托delegate 接下来通过几个例子就会学会怎么灵活使用Func了 委托回顾(d ...
- iOS回顾笔记( 02 ) -- 由九宫格布局引发的一系列“惨案”
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- 九天学会Java,第二天,算术运算
算术运算 先回顾上次我们提到的编程特性 变量和数据类型,赋值和输出 算术运算 选择结构 循环结构 函数定义,函数调用 变量作用域 栈,程序运行的基石 面向对象 异常处理 语言提供的公用包 第一天我们讲 ...
随机推荐
- [转]1.2 java web的发展历史
前言 了解java web的发展历史和相关技术的演进历程,非常有助于加深对java web技术的理解和认识. 阅读目录 1.Servlet的出现 2.Jsp的出现 3.倡导了MVC思想的Servlet ...
- js 制作分页
如图所示 在html中调用方法 getpage(7, 1, 1, 'URL') 1.page.js文件 代码 function getpage(count, countPage, pageIndex, ...
- MySQL中Index Merge简介
索引合并优化 官网翻译 MySQL5.7文档 索引合并是为了减少几个范围(type中的range类型:range can be used when a key column is compared t ...
- P1098 方程解的个数
题目描述 给出一个正整数N,请你求出x+y+z=N这个方程的正整数解的组数(1<=x<=y<=z<1000).其中,1<=x<=y<=z<=N . 输入 ...
- Spring Security 学习笔记-信道过滤器
信道过滤器主要职责是拦截不合规则的http请求,比如规定只能通过https访问资源,那么信道拦截器做相应的拦截处理,把http请求重定向为https请求,https请求则不做任何处理. 配置方式参照: ...
- API自动化测试指南
我相信自动化技能已经成为高级测试工程师总体技能的标配.敏捷和持续测试破坏了传统的测试自动化实践,导致测试工程师重新考虑自动化的完成方式.当今的自动化工程师需要在GUI的下方深入到API级别完成软件质量 ...
- gradle 打包后第三方登录不上
使用 gradlew clean assembleReleaseChannels 生成不用的渠道包后 第三方登录不上 原因:打包未设置好APP的 .keystore
- 开发API整理(转)
附送一个 android 源码 查看地址 http://grepcode.com/project/repository.grepcode.com/java/ext/com.google.android ...
- apk混淆打包和反编译(转)
前面有人写过了,我就直接引用了,大家就不乱找了.以后有问题再继续更新. 一.混淆打包.编译 1.Android 代码混淆.http://blog.csdn.net/zjclugger/article/ ...
- jsp页面出错 Cannot call sendRedirect() after the response has been committed
sendRedirect()不能多次调用,检查下代码