【LeetCode】水题(刚开始重新刷题找感觉用的)
[9] Palindrome Number [Easy]
给一个数字,用不转化成字符串的方式判断它是否是回文。
先求数字长度,然后把数字的后半段做翻转(就是不断地取模,除10这种方式),然后判断前后半段是否相等
有特殊情况,负数,10的倍数, 和零
class Solution {
public:
bool isPalindrome(int x) {
if (x < || x % == && x != ) {
return false;
}
//=============[1]先求数字长度
int len = ;
int tmpx = x;
while (tmpx / != ) {
tmpx /= ;
len++;
}
cout << len << endl;
//=============[2]然后翻转后面一半数字
int reverse = ;
tmpx = x;
for (int i = ; i < len / + ; ++i) {
reverse = reverse * + (tmpx % );
tmpx /= ;
}
cout << tmpx << " " << reverse << endl;
//=============[3]根据长度的奇偶性判断是否需要再除以10
if (len % == ) {
tmpx /= ;
}
if (tmpx != reverse) {
return false;
}
return true;
}
};
[157] Read N Characters Given Read4 [Easy]
给个read4的api,每次能从文件里面读四个字符,最多读N个字符,考虑到文件里面的字符数目可能比N小,所以不能直接返回N。
每次应该 加上 min(read4(buf + k), n); 这种表达, 代码如下:
// Forward declaration of the read4 API.
int read4(char *buf); class Solution {
public:
/**
* @param buf Destination buffer
* @param n Maximum number of characters to read
* @return The number of characters read
*/
int read(char *buf, int n) {
int res = , k = ;
while (n > ) {
int readN = min(read4(buf + k*), n);
n = n - ;
++k;
res += readN;
}
return res;
}
};
[168] Excel Sheet Column Title [Easy]
给个数字N,返回对应excel上面的列名。 比如1返回A,2返回B,27返回AA
26进制换算,有个N--原因需要注意。
class Solution {
public:
string convertToTitle(int n) {
string ans = "";
while(n > ) {
n--; //在这里N--的原因是A对应1,Z对应26
unsigned int mod = n % ;
char ch = 'A' + mod;
ans = ch + ans;
n = n / ;
}
return ans ;
}
};
[266] Palindrome Permutation [Easy]
给个字符串,判断用它的字母能不能组成个回文串,秒杀
class Solution {
public:
bool canPermutePalindrome(string s) {
map<char, int> mapCnt;
for (auto ele : s) {
mapCnt[ele]++;
}
int oddCnt = ;
for (auto ele : mapCnt) {
if(ele.second % ) {
oddCnt++;
if (oddCnt >= ) {
return false;
}
}
}
return true;
}
};
[500] Keyboard Row [Easy]
给N个单词,判断哪些单词的字母在键盘的同一行,输出这些单词。
class Solution {
public:
set<char> setLine1{'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'},
setLine2{'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'},
setLine3{'z', 'x', 'c', 'v', 'b', 'n', 'm'};
int findGroup(char lowerChar) {
if (setLine1.find(lowerChar) != setLine1.end()) {
return ;
} else if (setLine2.find(lowerChar) != setLine2.end()) {
return ;
} else if (setLine3.find(lowerChar) != setLine3.end()){
return ;
}
return -;
}
vector<string> findWords(vector<string>& words) {
vector<string> answer;
for(auto word : words) {
int groupId = ;
bool ansIn = true;
groupId = isupper(word[]) ? findGroup(tolower(word[])) : findGroup(word[]);
for (auto i = ; i < word.size(); ++i) {
int tmpGroupId = ;
tmpGroupId = isupper(word[i]) ? findGroup(tolower(word[i])) : findGroup(word[i]);
if (tmpGroupId != groupId) {
ansIn = false;
break;
}
}
if (ansIn) {
answer.push_back(word);
}
}
return answer;
}
};
【LeetCode】水题(刚开始重新刷题找感觉用的)的更多相关文章
- 在vscode中配置LeetCode插件,从此愉快地刷题
大家好,今早在B站看到up主的vscode里藏了leetcode插件,这才知道原来还有这款神器.但是没想到在用的时候遇到了一些麻烦,花了一点时间才解决.所以写这篇文章除了给大家安利这个好用的插件之外, ...
- NOI题库分治算法刷题记录
今天晚自习机房刷题,有一道题最终WA掉两组,极其不爽,晚上回家补完作业欣然搞定它,特意来写篇博文来记录下 (最想吐槽的是这个叫做分治的分类,里面的题目真的需要分治吗...) 先来说下分治法 分治法的设 ...
- 【套题】qbxt国庆刷题班D2
D2 今天的题感觉还是好妙的 T1 传送门 Description 现在有一张\(n\)个节点\(m\)条边的无向连通图\(G=(V,E)\),满足这张图中不存在长度大于等于3的环且图中没有重边和自环 ...
- 【套题】qbxt国庆刷题班D1
Day1 事实上D1的题目还是比较简单的= =然而D1T2爆炸了就十分尴尬--错失一波键盘 看题 T1 传送门 Description 现在你手里有一个计算器,上面显示了一个数\(S\),这个计算器十 ...
- 菜鸟刷题路(随缘刷题):leetcode88
lc88 class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int i = m - 1, j = ...
- LeetCode 到底怎么刷?GitHub 上多位大厂程序员亲测的高效刷题方式
作者:HelloGitHub-小鱼干 在众多的诸如阿里.腾讯等大厂之中,最看中面试者刷题技能的大概要数有"链表厂"之称的字节跳动了.作为一个新晋大厂,字节跳动以高薪.技术大佬云集吸 ...
- 从小白到 6 个 offer,我究竟是怎么刷题的?
最近自习室里又兴起了一阵刷题潮,大家相约刷题~ 今天和大家系统分享下我去年转行时的一个刷题过程和方法,希望对你有所帮助. 首先介绍下我的编程基础,我学的是金融工程专业,硕士时学过 C++ 的课,这也是 ...
- USACO刷题之路,开始了
几天前,重新开始刷题了. 重新刷题有几个原因: 1.曾经的OI经历,如今除了悟性高些.知识多些,大多已经遗忘.不希望真的让之前的OI水平就这么丢了. 2.越来越觉得,刷题真的是一件很开心的事情.大学中 ...
- 为了考PMP,我做了一个刷题小程序
一.背景 1.我是一名软件工程师,技术出身,担任开发组长,对项目管理不是很熟,所以决定系统学习下项目管理. 2.全球最适合的项目管理学习课程就是PMP,每年有4次PMP考试,证书还是很有含金量的. 3 ...
随机推荐
- nodejs包高效升级插件npm-check-updates
一.安装 npm install -g npm-check-updates 或 cnpm install -g npm-check-updates 二.使用 ncu crypto ^0.0.3 → ^ ...
- git-window-install及常用命令
step 1 : msysgit安装 step 2 : 安装完毕后,打开git bash 输入以下命令: git config --global user.name xxx (用户名) git con ...
- 横纵方向走马灯滚动,纯javascript代码
<body onload="beginmarquee()"> <table width="1024" border="0" ...
- python 常用技巧 — 字典 (dictionary)
目录: 1. python 相加字典所有的键值 (python sum all values in dictionary) 2. python 两个列表分别组成字典的键和值 (python two l ...
- 2PC和3PC
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484077.html 2PC 是计算机网络尤其是在数据库领域内,为了使基于分布式系统架构下的所有节点 ...
- PHP copy() 函数
定义和用法 copy() 函数复制文件. 该函数如果成功则返回 TRUE,如果失败则返回 FALSE. 语法 copy(file,to_file) 参数 描述 file 必需.规定要复制的文件. to ...
- sql server 基础语法4 实践练习+子查询
drop table class create table class ( classId ) primary key not null, cName ) ) insert into class ', ...
- Python之-异常处理
1.python中处理异常的方式 #coding:utf8 filename=raw_input("请输入你要操作的文件") try: f=open(filename) print ...
- JS-JSDoc
http://usejsdoc.org/ 生成 JSDoc 格式的注释: sublime:安装 DocBlockr VSCode:自带 JSDoc 插件
- WebGPU学习(九):学习“fractalCube”示例
大家好,本文学习Chrome->webgpu-samplers->fractalCube示例. 上一篇博文: WebGPU学习(八):学习"texturedCube"示 ...