LC刷题记录1

仅作学习记录只用

9.回文数

转换为字符串

to_string函数,这是C++11新增的:C++11标准增加了全局函数std::to_string,以及std::stoi/stol/stoll等等函数(这几个就是string转int,long,以及long long啦~)
to_string这个函数还是很强大的!
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);

可以直接转换成string类,判断回文数

截断为前后两个整数进行判断

bool  isPalindrome(int x){
	bool mid=0;
	if(x<0||x%10==0&&x!=0) return false;//负数/末尾为0直接判错
	while(x>mid){
	mid=mid*10+x%10;
	x/=10;
	}
	return mid==x||mid/10==x;//奇/偶两种情况
}

14.最长公共前缀

利用str.find()==0判断该子串是否为前缀
str.find()==string::npos 判断是否存在该子串
str.find()==0 判断位置是否为0

695.岛屿最大面积

不用开矩阵vis[50][50],DFS时可以直接将遍历过的顶点值设为0,节省空间
注意gird.size()和grid[0].size()分别对应的是x/y

58.最后一个单词

字符串反转
reverse(str.begin(),str.end())

383.赎金信

提升时间复杂度:
l2长度小于l1长度时,必定需要判错

989.数组形式加法

巧妙利用截断,不用将k转换成vector
代码思路如下:

vector<int> addToArrayForm(vector<int>& A, int K) {
        vector<int> result;
        int lastNum=K,i=A.size()-1;
        while(i>=0||lastNum>0)
        {   
            //对应位相加
            if(i>=0)lastNum+=A[i--];

            //尾部数字添加到result中,同时k需要丢弃尾部数字
            result.push_back(lastNum%10);
            lastNum/=10;
        }
        //注意:要反转,因为低位数字都排在数组的前面了,所以需要反转
        reverse(result.begin(),result.end());
        return result;
    }

错误情况:

Line x: member access within null pointer of type 'struct TreeNode'

原因:在测试过程中,第x行访问的指针为NULL,通常情况下表明程序未对NULL情况作出判断。

121. 买卖股票的最佳时机

区间和可以转换成求差的问题,求差问题,也可以转换成区间和的问题。
即:
原数组两个元素的最大差等于求差数组的最大子序和!!!

125.验证回文串

利用内置函数+双指针

islower(char)是否为小写
isupper(char)是否为大写
isdigit(char)是否为数字
isalpha(char)是否为字母
isalnum(char)是否为数字/字母
toupper(char)字母小转大
tolower(char)字母大转小

只出现一次的数字

运用位运算

一个数和 0 做 XOR 运算等于本身: a⊕0 = a
一个数和其本身做 XOR 运算等于 0: a⊕a = 0
XOR 运算满足交换律和结合律: a⊕b⊕a = (a⊕a)⊕b = 0⊕b = b

int res = 0;
for(int i=0;i<len;i++){
    res ^= nums[i];  //与每一个数字进行异或运算
}
return res;

vector 构造函数

vector(int nSize)    创建一个vector,元素个数为nSize
vector(int nSize,const t& t)  创建一个vector,元素个数为nSize,且值均为t
vector(const vector&)  复制构造函数
vector(begin,end)  复制[begin,end)区间内另一个数组的元素到vector中

278.第一个错误的版本

二分法时:
int mid = (l+h)/2 ;可能会有溢出的问题

采用:
int mid = l + (h-l)/2; 避免产生溢出

459.重复的子字符串

假设给定字符串s可由一个子串x重复n次构成,即s=nx。
现构造新字符串t=2s,即两个s相加,由于s=nx,则t=2nx。
去掉t的开头与结尾两位,则这两处的子串被破坏掉,此时t中包含2n-2个子串。
由于t中包含2n-2个子串,s中包含n个子串,若t中包含s,则有2n-2>=n,可得n>=2,由此我们可知字符串s可由一个子串x重复至少2次构成,判定为true;反之,若t中不包含s,则有2n-2<n,可得n<2,n只能为1,由此我们可知字符串s=x,假定的子串就为s本身,判定为false。

vector push_back 和 emplace_back

emplace_back() 和 push_back() 的区别,就在于底层实现的机制不同。push_back() 向容器尾部添加元素时,首先会创建这个元素,然后再将这个元素拷贝或者移动到容器中(如果是拷贝的话,事后会自行销毁先前创建的这个元素);而 emplace_back() 在实现时,则是直接在容器尾部创建这个元素,省去了拷贝或移动元素的过程。

⚠️后者比前者快一倍以上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通达信LC1转换是指将通达信股票数据格式转换为其他数据格式的过程。通达信是国内一种常用的股票行情软件,其数据格式独特,不能直接被其他软件或平台所识别和使用。为了解决这个问题,有些开发者开发了各种工具或软件,可以将通达信LC1格式的股票数据转换为其他格式,如CSV、TXT等,以便用户在其他软件或平台上分析和使用这些数据。 通达信LC1格式是一种二进制数据格式,由通达信软件特有的结构和编码方式组成。除了股票的基本信息(如股票代码、名称、交易日等),LC1格式还包含了股票的交易时间、开盘价、最高价、最低价、收盘价、成交量等详细数据。这种格式的数据可以提供给用户进行技术分析、量化交易以及其他投资决策。 通达信LC1转换可以带来很多好处。首先,通过将LC1格式转换为其他常用格式,用户可以更加灵活地使用和分析股票数据,无需局限于通达信软件。其次,转换后的股票数据可以更方便地导入到其他软件或平台,实现各种定制化的数据处理和应用需求。此外,用户通过通达信LC1转换,可以充分利用各种外部软件和平台的功能和优势,如机器学习、大数据分析等。 总之,通达信LC1转换是将通达信股票数据转换为其他格式的过程,可以增加用户对股票数据的使用灵活性和便利性,同时与其他软件和平台进行结合,为用户提供更多投资决策的可能性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值