leetcode 198-234 easy
198. House Robber
相邻不能打劫,取利益最大化。
思想:当前值和前一个和的总数 与 前一个和 做大小比较,取最大值,重复该步骤。
class Solution {
public:
int rob(vector<int>& nums) {
const int n = nums.size();
if (n == ) return ;
if (n == ) return nums[];
if (n == ) return max(nums[], nums[]);
vector<int> f(n, );
f[] = nums[];
f[] = max(nums[], nums[]);
for (int i = ; i < n; ++i)
f[i] = max(f[i-] + nums[i], f[i-]);
return f[n-];
}
};
202. Happy Number
class Solution {
public:
bool isHappy(int n) {
unordered_map<int,int> tmp;
while(n != )
{
if(tmp[n] == ) //如果出现了循环,则直接返回false
tmp[n]++;
else
return false;
int sum = ;
while(n != )
{
sum += pow(n % ,);
n = n / ;
}
n = sum;
}
return true;
}
};
///////////////////////////
class Solution {
public:
int next(int n)
{
int sum = ;
while(n != )
{
sum += pow(n % ,);
n = n / ;
}
return sum;
}
public:
bool isHappy(int n) {
int slow = next(n);
int fast = next(next(n));
while(slow != fast)
{
slow = next(slow);
fast = next(next(fast));
}
return fast == ;
}
};
204. Count Primes
思路:在i × i 的基础上递进 i,这些都不是素数;
class Solution {
public:
int countPrimes(int n) {
//Sieve of Erantothoses
vector<bool> check(n+,true);
//Because 0 and 1 are not primes
check[]=false;
check[]=false;
//OPtimization 2: Do only till rootn since all numbers after that are handled
//The remaining values are already true
for(int i=;i*i<=n;i++)
{
//If already visited
if(check[i]==false) continue; //访问过的不重复
//Optimation 1 : 3*2 is already handled by 2*3. Toh directly start from 9
int j=i*i;
while(j<=n)
{
check[j]=false;
j = j+i; ##以i*i基础上每次增加i,这些都可以化为i的倍数,所以不是素数
}
}
int count=;
//Checking all the numbers which are prime (less than n)
for(int i=;i<n;i++)
if(check[i]) count++;
return count;
}
};
219. Contains Duplicate II
Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the absolute difference between i and j is at most k.
思路:固定窗口滑动,左窗口利用erase来滑动,右边利用i来滑动。
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k)
{
unordered_set<int> s;
if (k <= ) return false;
if (k >= nums.size()) k = nums.size() - ;
for (int i = ; i < nums.size(); i++)
{
if (i > k) s.erase(nums[i - k - ]);
if (s.find(nums[i]) != s.end()) return true;
s.insert(nums[i]);
}
return false;
}
};
231. Power of Two
Power of 2 means only one bit of n is '1', so use the trick n&(n-1)==0 to judge whether that is the case
class Solution {
public:
bool isPowerOfTwo(int n) {
if(n<=) return false;
return !(n&(n-));
}
};
234. Palindrome Linked List
思路:中间为界,翻转后半部分,对照前半部分是否相等; 定位中界使用快慢指针。
class Solution {
public:
bool isPalindrome(ListNode* head) {
if(head==NULL||head->next==NULL)
return true;
ListNode* slow=head;
ListNode* fast=head;
while(fast->next!=NULL&&fast->next->next!=NULL){
slow=slow->next;
fast=fast->next->next;
}
slow->next=reverseList(slow->next);
slow=slow->next;
while(slow!=NULL){
if(head->val!=slow->val)
return false;
head=head->next;
slow=slow->next;
}
return true;
}
ListNode* reverseList(ListNode* head) {
ListNode* pre=NULL;
ListNode* next=NULL;
while(head!=NULL){
next=head->next;
head->next=pre;
pre=head;
head=next;
}
return pre;
}
};
leetcode 198-234 easy的更多相关文章
- [LeetCode] 198. 打家劫舍II ☆☆☆(动态规划)
描述 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的 ...
- leetcode 198. House Robber (Easy)
https://leetcode.com/problems/house-robber/ 题意: 一维数组,相加不相邻的数组,返回最大的结果. 思路: 一开始思路就是DP,用一维数组保存dp[i]保存如 ...
- (easy)LeetCode 198.House Robber
You are a professional robber planning to rob houses along a street. Each house has a certain amount ...
- Leetcode:234 回文链表
leetcode:234 回文链表 关键点:请判断一个链表是否为回文链表.示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true. ...
- [LeetCode] 198. House Robber 打家劫舍
You are a professional robber planning to rob houses along a street. Each house has a certain amount ...
- LeetCode 198. 打家劫舍(House Robber) 5
198. 打家劫舍 198. House Robber 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两 ...
- leetcode 198
198. House Robber You are a professional robber planning to rob houses along a street. Each house ha ...
- leetcode 198打家劫舍
讲解视频见刘宇波leetcode动态规划第三个视频 记忆化搜索代码: #include <bits/stdc++.h> using namespace std; class Solutio ...
- 【leetcode】234. Palindrome Linked List
234. Palindrome Linked List 1. 使用快慢指针找中点的原理是fast和slow两个指针,每次快指针走两步,慢指针走一步,等快指针走完时,慢指针的位置就是中点.如果是偶数个数 ...
- 【Leetcode】【Easy】String to Integer (atoi)
Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. ...
随机推荐
- Python(四)基础篇之「文件对象&错误处理」
[笔记]Python(四)基础篇之「文件对象&错误处理」 2016-12-08 ZOE 编程之魅 Python Notes: ★ 如果你是第一次阅读,推荐先浏览:[重要公告]文章更新. ...
- Delphi遍历进程-Win32API
本博客的Delphi代码使用的版本均为DelphiXE10.x 1.1 .枚举进程 通过进程名称获取指定的进程ID,代码很详细,不再赘述 unit Uuitls; interface uses TlH ...
- Image 转换成 Icon
/// <summary> /// Converts an image into an icon. /// </summary> /// <param name=&quo ...
- (二)通过JAVA调用SAP接口 (增加一二级参数)
(二)通过JAVA调用SAP接口 (增加一二级参数) 一.建立sap连接 请参考我的上一篇博客 JAVA连接SAP 二.测试项目环境准备 在上一篇操作下已经建好的环境后,在上面的基础上新增类即可 三. ...
- [code]图像亮度调整enhancement
//draft 2013.9 //F=X2/u; ////远处细节被淹没. 亮的地方增亮明显,暗的地方更暗. 不可取. // CvScalar rgb; // rgb=cvAvg(src); //fo ...
- [code]自动白平衡white blance
//2013.10.24 //eageldiao //自动白平衡 CvScalar rgb; rgb=cvAvg(src); #ifdef COLOR_GW //灰度世界假设(R,= R*K/Ravg ...
- js前台中获取后台传的值
后台controller String ifOffice = "yes";req.setAttribute("ifOffice", ifOffice); 前台j ...
- mysql api 不支持source命令
今天写了个代码 <?php ..... mysql_query("source /tmp/cr.sql",$link); ..... ?> 结果死活cr.sql的SQL ...
- host ngnix zull
1.浏览器解析域名:www.baidu.com 2.由本地host解析得到IP:127.0.0.1 3.向IP传递请求,IP所在PC的Ngnix监听80端口. 4.IP所以PC收到请求后,nginx由 ...
- 2019.10.30 csp-s模拟测试94 反思总结
头一次做图巨的模拟题OWO 自从上一次听图巨讲课然后骗了小礼物以后一直对图巨印象挺好的233 T1: 对于XY取对数=Y*log(x) 对于Y!取对数=log(1*2*3*...*Y)=log1+lo ...