力扣342. 4的幂+1. 两数之和

第一百一十五天 --- 力扣342. 4的幂+1. 两数之和

题目一

力扣:1. 两数之和

在这里插入图片描述
在这里插入图片描述

思路:模拟

1、target是由两个数构成的并且两个数是唯一的答案,我枚举数组中任意一个数之后,只要余下的数出现在了数组里面,就意味着我找到答案了。
2、怎么快速的知道要的数到底在不在,用Hash表存上就行,因为答案要的是出现的位置,所以用unordered_map存储,key是数组中的值,value是位置。

细节

1、要的是数组中两个不同位置上的数,所以需要判断位置是否一致。

代码

class Solution {
public:
	vector<int> twoSum(vector<int>& nums, int target) {
		unordered_map<int, int> item;
		int n = nums.size();
		vector<int> ans;

		for (int i = 0; i < n; i++) {
			item.insert(make_pair(nums[i], i));
		}

		for (int i = 0; i < n; i++) {
			int tmp = target - nums[i];
			if (item.count(tmp) > 0 && item[tmp] != i) {
				ans.push_back(i);
				ans.push_back(item[tmp]);
				return ans;
			}
		}
		return ans;
	}
};

所有代码均以通过力扣测试
(经过多次测试最短时间为):
在这里插入图片描述
在这里插入图片描述

题目二

力扣:342. 4的幂

在这里插入图片描述

思路:位运算

1、不能是0,4^0=1
2、其二进制表示中只能有一个1
3、2^3=8这样奇数次幂都不行。我们就拿1、2、3、4来说,1、4可以,2不行,3不在考虑范围,所以1%3=1,2%3=2,所以%3等于1的,才是所求,进一步验证后成立。

代码

class Solution {
public:
	bool isPowerOfFour(int n) {
		return n > 0 && (n&n - 1) == 0 && (n % 3) == 1;
	}
};

所有代码均以通过力扣测试
(经过多次测试最短时间为):
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JLU_LYM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值