0.

1.
发现没,与数组遍历、当前元素和前后元素大小比较 相关的都用单调栈
2.
sql运行顺序查一下(运行顺序依次是from、where、group by、select order by。先根据s1.Id进行分组,然后计算(count)组内大于等于score的个数(去重),也就是这个score的排名。)
3.
isstream流的用法。
4.
stoi()函数如果传入的字符串s中含有不是数字的字符,则只会识别到从开头到第一个非法字符之前,如果第一个字符就是非法字符则会报错
atoi和stoi相同点:
①都是C++的字符处理函数,把数字字符串转换成int输出
②头文件都是#include
不同点:
①atoi()的参数是 const char* ,因此对于一个字符串str我们必须调用 c_str()的方法把这个string转换成 const char类型的,而stoi()的参数是const string,不需要转化为 const char*;
②stoi()会做范围检查,默认范围是在int的范围内的,如果超出范围的话则会runtime error!
5.
isalpha()用来判断一个字符是否为字母,如果是字符则返回非零,否则返回零。
isalnum()用来判断一个字符是否为数字或者字母,也就是说判断一个字符是否属于az||AZ||0~9。
isdigit()用来判断一个字符是否为数字
islower()用来判断一个字符是否为小写字母,也就是是否属于a~z。
isupper()和islower相反,用来判断一个字符是否为大写字母。
注:以上均为宏定义,并非真正函数。
6.

7.二叉树中两个结点的距离:https://www.cnblogs.com/wxdjss/p/5698071.html
假设给定的节点为node1,node2,可以分为下面的两种情况:
1)node1是node2的祖先节点或孩子结点,可以理解为两个节点在一条线上。例如:Dist(2,4),Dist(6,1)
2)node1和node2没有直接或间接的父子关系。例如,Dist(4,3),他们需要一个共同的祖先结点1连接起来
假设lca是两个节点的最低公共祖先节点:
Dist(n1,n2)=Dist(root,n1)+Dist(root,n2)-2*Dist(root,lca)
这个公式已经涵盖了上面的两种情况。先找出lca,再求root节点到某个节点的距离就比较简单了。
8.
Java自定义排序:https://blog.csdn.net/qq_37405320/article/details/72862155
基本方法
int compare(Object o1, Object o2) 返回一个基本类型的整型
如果要按照升序排序,
则o1 小于o2,返回-1(负数),相等返回0,o1大o2返回1(正数)return o1-o2;
如果要按照降序排序
则o1 小于o2,返回1(正数),相等返回0,o1大于o2返回-1(负数)return o2-o1;
9. C++ string insert

10 . Java中List, Integer[], int[]的相互转换
除了循环遍历外:流操作

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;public class Main {public static void main(String[] args) {int[] data = {4, 5, 3, 6, 2, 5, 1};// int[] 转 List<Integer>List<Integer> list1 = Arrays.stream(data).boxed().collect(Collectors.toList());// Arrays.stream(arr) 可以替换成IntStream.of(arr)。// 1.使用Arrays.stream将int[]转换成IntStream。// 2.使用IntStream中的boxed()装箱。将IntStream转换成Stream<Integer>。// 3.使用Stream的collect(),将Stream<T>转换成List<T>,因此正是List<Integer>。// int[] 转 Integer[]Integer[] integers1 = Arrays.stream(data).boxed().toArray(Integer[]::new);// 前两步同上,此时是Stream<Integer>。// 然后使用Stream的toArray,传入IntFunction<A[]> generator。// 这样就可以返回Integer数组。// 不然默认是Object[]。// List<Integer> 转 Integer[]Integer[] integers2 = list1.toArray(new Integer[0]);//  调用toArray。传入参数T[] a。这种用法是目前推荐的。// List<String>转String[]也同理。// List<Integer> 转 int[]int[] arr1 = list1.stream().mapToInt(Integer::valueOf).toArray();// 想要转换成int[]类型,就得先转成IntStream。// 这里就通过mapToInt()把Stream<Integer>调用Integer::valueOf来转成IntStream// 而IntStream中默认toArray()转成int[]。// Integer[] 转 int[]int[] arr2 = Arrays.stream(integers1).mapToInt(Integer::valueOf).toArray();// 思路同上。先将Integer[]转成Stream<Integer>,再转成IntStream。// Integer[] 转 List<Integer>List<Integer> list2 = Arrays.asList(integers1);// 最简单的方式。String[]转List<String>也同理。// 同理String[] strings1 = {"a", "b", "c"};// String[] 转 List<String>List<String> list3 = Arrays.asList(strings1);// List<String> 转 String[]String[] strings2 = list3.toArray(new String[0]);}
}

注意:List list2 = Arrays.asList(integers1);调用 Arrays.asList()时,其返回值类型是ArrayList,但此ArrayList是Array的内部类,比如调用add()时,就会报错:java.lang.UnsupportedOperationException,并且结果会因为array的某个值的改变而改变,所以最好再次构造一个新的ArrayList: List list2 = new ArrayList<>(Arrays.asList(integers1))

1. 二进制1的个数

统计二进制1的个数可以分别获取每个二进制位数,然后再统计其1的个数,此方法效率比较低
计算其 **a &= (a-1)**的结果:

int count_one(int a){int cnt=0;while(a) a=a&(a-1),cnt++;return cnt;
}

2.C++字符串分割

字符串切割的使用频率还是挺高的,string本身没有提供切割的方法,但可以使用stl提供的封装进行实现或者通过c函数strtok()函数实现。

1、通过stl实现

涉及到string类的两个函数find和substr:
1、find函数
原型:size_t find ( const string& str, size_t pos = 0 ) const;
功能:查找子字符串第一次出现的位置。
参数说明:str为子字符串,pos为初始查找位置。
返回值:找到的话返回第一次出现的位置,否则返回string::npos

2、substr函数
原型:string substr ( size_t pos = 0, size_t len = npos ) const;
功能:获得子字符串。
参数说明:pos为起始位置(默认为0),len为字符串长度(默认为npos)
返回值:子字符串
代码如下:

std::vector&lt;std::string&gt; splitWithStl(const std::string &amp;str,const std::string &amp;pattern)
{std::vector&lt;std::string&gt; resVec;if ("" == str){return resVec;}//方便截取最后一段数据std::string strs = str + pattern;size_t pos = strs.find(pattern);size_t size = strs.size();while (pos != std::string::npos){std::string x = strs.substr(0,pos);resVec.push_back(x);strs = strs.substr(pos+1,size);pos = strs.find(pattern);}return resVec;}

2、通过使用strtok()函数实现

原型:char *strtok(char *str, const char *delim);
功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。
描述:strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时 则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回被分割出片段的指针。

其它:strtok函数线程不安全,可以使用strtok_r替代。
代码如下:

std::vector<std::string> split(const std::string &str,const std::string &pattern)
{//const char* convert to char*char * strc = new char[strlen(str.c_str())+1];strcpy(strc, str.c_str());std::vector<std::string> resultVec;char* tmpStr = strtok(strc, pattern.c_str());while (tmpStr != NULL){resultVec.push_back(std::string(tmpStr));tmpStr = strtok(NULL, pattern.c_str());}delete[] strc; return resultVec; };

LeetCode刷题过程中的一些小tips相关推荐

  1. 在哪里刷题_刷题过程中,这些坑你踩了几个?

    练习卷做了一套又一套,题目刷了一遍又一遍,一考试却发现,分数进步并不大,有些同学甚至没有进步.刷刷刷,为什么分刷不上来?你可能掉进了这些刷题误区--一看就会不少同学在做题的过程中遇到不会的题目的时候, ...

  2. ACM做题过程中的一些小技巧

    1.一般用C语言节约空间,要用C++库函数或STL时才用C++; cout.cin和printf.scanf最好不要混用. 大数据输入输出时最好不要用cin.cout,防止超时. 2.有时候int型不 ...

  3. 写题过程中碰见的小问题

    文章目录 ++和-- vector 二维vector的初始化 数组中最大的数max_element() 数组所有元素之和accumulate() vector数组去重 对pair类型的vector排序 ...

  4. 【LeetCode刷题日记】常用算法基础和理解及运用

    在我们LeetCode刷题过程中,如果我们只是了解数据结构(数组,链表,数)的使用方法,那我们在面对复杂的题目时,是很难很好的解决问题的,因此我们要了解一些常用算法来帮助我们更好的解题. 递归和迭代 ...

  5. LeetCode刷题专栏第一篇--思维导图时间安排

    昨天是元宵节,过完元宵节相当于这个年正式过完了.不知道大家有没有投入继续投入紧张的学习工作中.年前我想开一个Leetcode刷题专栏,于是发了一个投票想了解大家的需求征集意见.投票于2019年2月1日 ...

  6. 小何同学的leetcode刷题笔记 基础篇(01)整数反转

    小何同学的leetcode刷题笔记 基础篇(01)整数反转[07] *** [01]数学取余法*** 对数字进行数位操作时,常见的方法便是用取余的方法提取出各位数字,再进行操作 操作(1):对10取余 ...

  7. ​LeetCode刷题实战623:在二叉树中增加一行

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  8. LeetCode 刷题之旅(2020.05.22)——105. 从前序与中序遍历序列构造二叉树(中)

    LeetCode 刷题之旅(2020.05.22)--105. 从前序与中序遍历序列构造二叉树(中) 题目: 根据一棵树的前序遍历与中序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如, ...

  9. golang中的栈(LeetCode刷题)

    栈的模拟(LeetCode刷题用法) func main() {stack := make([]string, 0)stack = append(stack, "1" )stack ...

最新文章

  1. C++ 名字重载、隐藏、覆盖
  2. (一)MVC5干货篇,目录和路由
  3. ios滚动条影响父页面 vue_父元素设置overflow:scroll时vuedraggable组件出现奇怪效果的解决方案...
  4. javaSE(java基础库)私人学习笔记
  5. topcoder srm 699 div1 -3
  6. Spring 事务和事务传播机制
  7. B. Shashlik Cooking(思维)
  8. 微信大数据解析不一样的人生,你被戳中了吗……
  9. 快音视-视频id解密
  10. Excel分段求平均值
  11. Chino 操作系统开发日志 (1) - 为 IoT 而生
  12. 查询CSS属性都支持那些浏览器
  13. VUE360浏览器访问空白的问题
  14. php最简易安装教程
  15. core开发linux桌面应用,【.NET Core 跨平台 GUI 开发】第一篇:编写你的第一个 Gtk# 应用...
  16. Windows Service和Worker Service
  17. matlab 数控插补实验,数控插补原理及G代码编程实验.ppt
  18. 网包是如何到达另外一台电脑上的?当你在微信上发送一条消息时互联网发生了什么?
  19. 使用wps2019的表格验证数据造假与否(本福特定律)
  20. jdbc通用查询方法

热门文章

  1. 前端学习(2337):angular之管道
  2. 前端学习(1299):gulp插件
  3. 第三十八期:用Git帮助写作者更好地完成工作
  4. 玩转oracle 11g(51):select t.*,t.rowid
  5. 玩转oracle 11g(49):监听服务设置开机自启,不用一直配置监听
  6. 实例23:python
  7. MAX535 单路13位DAC 模拟SPI驱动
  8. 树莓派移植SX1278 LoRa通信--使用wiringPi 移植GPIO中断
  9. vue根据不同权限显示图片_vue多级权限组件的实现
  10. 使用 function 构造函数创建组件和使用 class 关键字创建组件