一、加一
1,程序简介
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入:digits = [1,2,3] 输出:[1,2,4] 解释:输入数组表示数字 123。
示例 2:
输入:digits = [4,3,2,1] 输出:[4,3,2,2] 解释:输入数组表示数字 4321。
示例 3:
提示:
1 <= digits.length <= 100
0 <= digits[i] <= 9
2,程序代码
"""
Created on Mon Dec 13 09:09:27 2021
Function:
@author: 小梁aixj
"""
class Solution ( object ) :
def plusOne ( self, digits) :
ls = len ( digits)
for index in reversed ( range ( ls) ) :
if digits[ index] < 9 :
digits[ index] += 1
return digits
else :
digits[ index] = 0
digits. insert( 0 , 1 )
return digits
s = Solution( )
print ( s. plusOne( digits = [ 1 , 2 , 3 ] ) )
print ( s. plusOne( digits = [ 4 , 3 , 2 , 1 ] ) )
print ( s. plusOne( digits = [ 0 ] ) )
3,运行结果
二、全排列 ||
1,程序简介
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。
示例 1:
输入:nums = [1,1,2] 输出:[[1,1,2], [1,2,1], [2,1,1]]
示例 2:
输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
提示:
1 <= nums.length <= 8
-10 <= nums[i] <= 10
以下程序实现了这一功能,请你填补空白处内容:
using namespace std;
class Solution
{
public:
vector< vector< int >> permuteUnique( vector< int > & nums)
{
vector< vector< int >> res;
vector< bool > used( nums. size( ) ) ;
sort( nums. begin( ) , nums. end( ) ) ;
dfs( nums, used, res) ;
return res;
}
private:
vector< int > stack;
void dfs( vector< int > & nums, vector< bool > & used, vector< vector< int >> & res)
{
if ( stack. size( ) == nums. size( ) )
{
res. push_back( stack) ;
}
else
{
for ( int i = 0 ; i < nums. size( ) ; i+ + )
{
if ( !used[ i] )
{
_____________________
stack. push_back( nums[ i] ) ;
used[ i] = true;
dfs( nums, used, res) ;
stack. pop_back( ) ;
used[ i] = false;
}
}
}
}
} ;
2,程序代码
"""
Created on Mon Dec 13 09:10:30 2021
Function:
@author: 小梁aixj
"""
from typing import List
class Solution :
def permuteUnique ( self, nums: List[ int ] ) - > List[ List[ int ] ] :
ans = [ ]
if len ( nums) == 0 :
return
if len ( nums) == 1 :
return [ nums]
for index, item in enumerate ( nums) :
res = nums[ : index] + nums[ index+ 1 : ]
for j in self. permuteUnique( res) :
ans. append( j+ [ item] )
rel = [ ]
for i in ans:
if i not in rel:
rel. append( i)
return rel
s = Solution( )
print ( s. permuteUnique( nums = [ 1 , 1 , 2 ] ) )
print ( s. permuteUnique( nums = [ 1 , 2 , 3 ] ) )
3,运行结果
三、无重复字符的最长子串
1,程序简介
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: s = “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
示例 2:
输入: s = “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
示例 3:
输入: s = “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。
示例 4:
提示:
0 <= s.length <= 5 * 104
s 由英文字母、数字、符号和空格组成
以下程序实现了这一功能,请你填补空白处内容:
int hset[ 128 ] ;
int lengthOfLongestSubstring( char * s)
{
int i = 0 , j = 0 ;
int m = 0 ;
memset( hset, 0 , sizeof hset) ;
for ( ; s[ j] ; j+ + )
{
___________________
}
return m;
}
2,程序代码
"""
Created on Mon Dec 13 09:11:33 2021
Function:
@author: 小梁aixj
"""
class Solution :
def lengthOfLongestSubstring ( self, s: str ) - > int :
i = 0
j = 0
m = 0
hset = { }
while j < len ( s) :
char = s[ j]
index = hset. get( char)
if index is not None and index > i:
i= index
m = m if m > j- i+ 1 else j- i+ 1
hset[ char] = j+ 1
j += 1
return m
s= Solution( )
print ( s. lengthOfLongestSubstring( 'abcabcbb' ) )
print ( s. lengthOfLongestSubstring( 'bbbbb' ) )
print ( s. lengthOfLongestSubstring( 'pwwkew' ) )
print ( s. lengthOfLongestSubstring( '' ) )
3,运行结果