mirror of
https://github.com/chefyuan/algorithm-base.git
synced 2024-12-27 04:46:17 +00:00
添加py,js和c++,删除多于代码
This commit is contained in:
parent
bf547801e9
commit
ae5cd15279
@ -1,3 +1,5 @@
|
|||||||
|
>
|
||||||
|
>
|
||||||
> 如果阅读时,发现错误,或者动画不可以显示的问题可以添加我微信好友 **[tan45du_one](https://raw.githubusercontent.com/tan45du/tan45du.github.io/master/个人微信.15egrcgqd94w.jpg)** ,备注 github + 题目 + 问题 向我反馈
|
> 如果阅读时,发现错误,或者动画不可以显示的问题可以添加我微信好友 **[tan45du_one](https://raw.githubusercontent.com/tan45du/tan45du.github.io/master/个人微信.15egrcgqd94w.jpg)** ,备注 github + 题目 + 问题 向我反馈
|
||||||
>
|
>
|
||||||
> 感谢支持,该仓库会一直维护,希望对各位有一丢丢帮助。
|
> 感谢支持,该仓库会一直维护,希望对各位有一丢丢帮助。
|
||||||
@ -30,6 +32,8 @@
|
|||||||
|
|
||||||
#### 题目代码
|
#### 题目代码
|
||||||
|
|
||||||
|
Java Code:
|
||||||
|
|
||||||
```java
|
```java
|
||||||
class Solution {
|
class Solution {
|
||||||
public int singleNumber(int[] nums) {
|
public int singleNumber(int[] nums) {
|
||||||
@ -53,6 +57,64 @@ class Solution {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
C++ Code:
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
class Solution {
|
||||||
|
public:
|
||||||
|
int singleNumber(vector<int>& nums) {
|
||||||
|
//特殊情况
|
||||||
|
if (nums.size() == 1) {
|
||||||
|
return nums[0];
|
||||||
|
}
|
||||||
|
//HashMap
|
||||||
|
unordered_map<int,int> map;
|
||||||
|
//将其存入哈希表中,含义为,若该元素不存在则存入表中,并计数为1,若已经存在获取次数并加1
|
||||||
|
for (int x : nums) {
|
||||||
|
if (map.find(x) == map.end()) {
|
||||||
|
map.insert({x, 0});
|
||||||
|
}
|
||||||
|
map[x] += 1;
|
||||||
|
}
|
||||||
|
//遍历出出现次数为1的情况
|
||||||
|
for (int y : nums) {
|
||||||
|
if(map.at(y) == 1){
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
JS Code:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var singleNumber = function(nums) {
|
||||||
|
//特殊情况
|
||||||
|
if (nums.length === 1) {
|
||||||
|
return nums[0];
|
||||||
|
}
|
||||||
|
//HashMap
|
||||||
|
map = {};
|
||||||
|
//将其存入哈希表中,含义为,若该元素不存在则存入表中,并计数为1,若已经存在获取次数并加1
|
||||||
|
for (let x of nums) {
|
||||||
|
if (!(x in map)) {
|
||||||
|
map[x] = 0;
|
||||||
|
}
|
||||||
|
map[x] += 1;
|
||||||
|
}
|
||||||
|
//遍历出出现次数为1的情况
|
||||||
|
for (let key in map) {
|
||||||
|
if (map[key] === 1) {
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
Python Code:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
class Solution:
|
class Solution:
|
||||||
def singleNumber(self, nums: List[int]) -> int:
|
def singleNumber(self, nums: List[int]) -> int:
|
||||||
@ -104,13 +166,44 @@ class Solution {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
C++ Code:
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
class Solution {
|
||||||
|
public:
|
||||||
|
int singleNumber(vector<int>& nums) {
|
||||||
|
//排序
|
||||||
|
sort(nums.begin(), nums.end());
|
||||||
|
for (int i = 1; i < nums.size() - 1; i += 2){
|
||||||
|
if (nums[i] != nums[i - 1]){
|
||||||
|
return nums[i - 1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nums[nums.size() - 1];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
JS Code:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var singleNumber = function(nums) {
|
||||||
|
// 排序
|
||||||
|
nums.sort();
|
||||||
|
for (let i = 1; i < nums.length - 1; i += 2) {
|
||||||
|
if (nums[i] != nums[i - 1]) {
|
||||||
|
return nums[i - 1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nums[nums.length - 1];
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
Python Code:
|
Python Code:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
class Solution:
|
class Solution:
|
||||||
def singleNumber(self, nums: List[int]) -> int:
|
def singleNumber(self, nums: List[int]) -> int:
|
||||||
if len(nums) == 1:
|
|
||||||
return nums[0]
|
|
||||||
# 排序
|
# 排序
|
||||||
nums.sort()
|
nums.sort()
|
||||||
for i in range(1, len(nums), 2):
|
for i in range(1, len(nums), 2):
|
||||||
@ -136,18 +229,14 @@ Java Code:
|
|||||||
```java
|
```java
|
||||||
class Solution {
|
class Solution {
|
||||||
public int singleNumber(int[] nums) {
|
public int singleNumber(int[] nums) {
|
||||||
if (nums.length == 1){
|
|
||||||
return nums[0];
|
|
||||||
}
|
|
||||||
HashSet<Integer> set = new HashSet<>();
|
HashSet<Integer> set = new HashSet<>();
|
||||||
//循环遍历
|
//循环遍历
|
||||||
for (int x : nums){
|
for (int x : nums){
|
||||||
//已经存在,则去除
|
//已经存在,则去除
|
||||||
if(set.contains(x)){
|
if(set.contains(x)){
|
||||||
set.remove(x);
|
set.remove(x);
|
||||||
}
|
|
||||||
//否则存入
|
//否则存入
|
||||||
else{
|
} else {
|
||||||
set.add(x);
|
set.add(x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -157,13 +246,53 @@ class Solution {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
C++ Code:
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
class Solution {
|
||||||
|
public:
|
||||||
|
int singleNumber(vector<int>& nums) {
|
||||||
|
unordered_set<int> set;
|
||||||
|
//循环遍历
|
||||||
|
for (int x : nums) {
|
||||||
|
//已经存在,则去除
|
||||||
|
if (set.find(x) == set.end()) {
|
||||||
|
set.insert(x);
|
||||||
|
//否则存入
|
||||||
|
} else {
|
||||||
|
set.erase(x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//返回仅剩的一个元素
|
||||||
|
return *set.begin();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
JS Code:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var singleNumber = function(nums) {
|
||||||
|
let set = new Set();
|
||||||
|
//循环遍历
|
||||||
|
for (let x of nums) {
|
||||||
|
//已经存在,则去除
|
||||||
|
if (set.has(x)) {
|
||||||
|
set.delete(x);
|
||||||
|
//否则存入
|
||||||
|
} else {
|
||||||
|
set.add(x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return set.values().next().value;
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
Python Code:
|
Python Code:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
class Solution:
|
class Solution:
|
||||||
def singleNumber(self, nums: List[int]) -> int:
|
def singleNumber(self, nums: List[int]) -> int:
|
||||||
if len(nums) == 1:
|
|
||||||
return nums[0]
|
|
||||||
set_ = set()
|
set_ = set()
|
||||||
# 循环遍历
|
# 循环遍历
|
||||||
for x in nums:
|
for x in nums:
|
||||||
@ -189,12 +318,11 @@ class Solution:
|
|||||||
|
|
||||||
#### 题目代码
|
#### 题目代码
|
||||||
|
|
||||||
|
Java Code:
|
||||||
|
|
||||||
```java
|
```java
|
||||||
class Solution {
|
class Solution {
|
||||||
public int singleNumber(int[] nums) {
|
public int singleNumber(int[] nums) {
|
||||||
if (nums.length == 1) {
|
|
||||||
return nums[0];
|
|
||||||
}
|
|
||||||
Arrays.sort(nums);
|
Arrays.sort(nums);
|
||||||
Stack<Integer> stack = new Stack<>();
|
Stack<Integer> stack = new Stack<>();
|
||||||
for (int x : nums){
|
for (int x : nums){
|
||||||
@ -214,6 +342,53 @@ class Solution {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
C++ Code:
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
class Solution {
|
||||||
|
public:
|
||||||
|
int singleNumber(vector<int>& nums) {
|
||||||
|
sort(nums.begin(), nums.end());
|
||||||
|
stack<int> stack;
|
||||||
|
for (int x: nums) {
|
||||||
|
if (stack.empty()) {
|
||||||
|
stack.push(x);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//不同时直接跳出
|
||||||
|
if (stack.top() != x) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//相同时出栈
|
||||||
|
stack.pop();
|
||||||
|
}
|
||||||
|
return stack.top();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
JS Code:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var singleNumber = function(nums) {
|
||||||
|
nums.sort();
|
||||||
|
let stack = [];
|
||||||
|
for (let x of nums) {
|
||||||
|
if (!stack.length) {
|
||||||
|
stack.push(x);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//不同时直接跳出
|
||||||
|
if (stack[0] !== x) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//相同时出栈
|
||||||
|
stack.pop();
|
||||||
|
}
|
||||||
|
return stack[0];
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
Python Code:
|
Python Code:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
@ -229,8 +404,10 @@ class Solution:
|
|||||||
if not stack:
|
if not stack:
|
||||||
stack.append(x)
|
stack.append(x)
|
||||||
continue
|
continue
|
||||||
|
# 不同时直接跳出
|
||||||
if stack[-1] != x:
|
if stack[-1] != x:
|
||||||
break
|
break
|
||||||
|
# 相同时出栈
|
||||||
stack.pop()
|
stack.pop()
|
||||||
return stack[-1]
|
return stack[-1]
|
||||||
```
|
```
|
||||||
@ -249,12 +426,11 @@ class Solution:
|
|||||||
|
|
||||||
#### 题目代码
|
#### 题目代码
|
||||||
|
|
||||||
|
Java Code:
|
||||||
|
|
||||||
```java
|
```java
|
||||||
class Solution {
|
class Solution {
|
||||||
public int singleNumber(int[] nums) {
|
public int singleNumber(int[] nums) {
|
||||||
if (nums.length == 1){
|
|
||||||
return nums[0];
|
|
||||||
}
|
|
||||||
HashSet<Integer> set = new HashSet<>();
|
HashSet<Integer> set = new HashSet<>();
|
||||||
int setsum = 0;
|
int setsum = 0;
|
||||||
int numsum = 0;
|
int numsum = 0;
|
||||||
@ -273,6 +449,51 @@ class Solution {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
C++ Code:
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
class Solution {
|
||||||
|
public:
|
||||||
|
int singleNumber(vector<int>& nums) {
|
||||||
|
unordered_set<int> set;
|
||||||
|
int setsum = 0;
|
||||||
|
int numsum = 0;
|
||||||
|
for (int x : nums) {
|
||||||
|
//所有元素的和
|
||||||
|
numsum += x;
|
||||||
|
if (set.find(x) == set.end()) {
|
||||||
|
//HashSet内元素的和
|
||||||
|
setsum += x;
|
||||||
|
}
|
||||||
|
set.insert(x);
|
||||||
|
}
|
||||||
|
//返回值
|
||||||
|
return setsum * 2 - numsum;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
JS Code:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var singleNumber = function(nums) {
|
||||||
|
let set = new Set();
|
||||||
|
let setsum = 0;
|
||||||
|
let numsum = 0;
|
||||||
|
for (let x of nums) {
|
||||||
|
//所有元素的和
|
||||||
|
numsum += x;
|
||||||
|
if (!set.has(x)) {
|
||||||
|
setsum += x;
|
||||||
|
}
|
||||||
|
//HashSet内元素的和
|
||||||
|
set.add(x);
|
||||||
|
}
|
||||||
|
//返回值
|
||||||
|
return 2 * setsum - numsum;
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
Python Code:
|
Python Code:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
@ -289,7 +510,7 @@ class Solution:
|
|||||||
|
|
||||||
这个方法主要是借助咱们的位运算符 ^ 按位异或,我们先来了解一下这个位运算符。
|
这个方法主要是借助咱们的位运算符 ^ 按位异或,我们先来了解一下这个位运算符。
|
||||||
|
|
||||||
> 按位异或(XOR)运算符“^”是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。相同时为0。
|
> 按位异或(XOR)运算符“^”是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。相同时为0。
|
||||||
|
|
||||||
> 任何数和0异或,仍为本身:a⊕0 = a
|
> 任何数和0异或,仍为本身:a⊕0 = a
|
||||||
> 任何数和本身异或,为0:a⊕a = 0
|
> 任何数和本身异或,为0:a⊕a = 0
|
||||||
@ -320,6 +541,31 @@ class Solution {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
C++ Code:
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
class Solution {
|
||||||
|
public:
|
||||||
|
int singleNumber(vector<int>& nums) {
|
||||||
|
int num = 0;
|
||||||
|
//异或
|
||||||
|
for (vector<int>::iterator x = nums.begin(); x != nums.end(); x++) {
|
||||||
|
num ^= *x;
|
||||||
|
}
|
||||||
|
return num;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
JS Code:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var singleNumber = function(nums) {
|
||||||
|
//异或
|
||||||
|
return nums.reduce((num, x) => num ^= x);
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
Python Code:
|
Python Code:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
@ -327,7 +573,9 @@ from functools import reduce
|
|||||||
|
|
||||||
class Solution:
|
class Solution:
|
||||||
def singleNumber(self, nums: List[int]) -> int:
|
def singleNumber(self, nums: List[int]) -> int:
|
||||||
return reduce(lambda num, x: int(num) ^ int(x), nums)
|
# 异或
|
||||||
|
return reduce(lambda num, x: num ^ x, nums, 0)
|
||||||
```
|
```
|
||||||
|
|
||||||
本题一共介绍了6种解题方法,肯定还有别的方法,欢迎大家讨论。大家可以在做题的时候一题多解。这样能大大提高自己解题能力。下面我们来看一下这些方法如何应用到其他题目上。
|
本题一共介绍了6种解题方法,肯定还有别的方法,欢迎大家讨论。大家可以在做题的时候一题多解。这样能大大提高自己解题能力。下面我们来看一下这些方法如何应用到其他题目上。
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user