前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【笔记】算法OJ 杂记C++ Java 容器使用

【笔记】算法OJ 杂记C++ Java 容器使用

作者头像
韩旭051
发布2021-04-14 15:13:51
9240
发布2021-04-14 15:13:51
举报
文章被收录于专栏:刷题笔记刷题笔记

很久不做算法题目了 马上春招了 才重新拿起来 虽然 CSDN 关于 PAT 的 博文 就写了 四五百篇 但是 一两个月不做题 真的 都忘干净了 而且 我主攻打 Java 技术栈 就尽量 一道 题目 用C++ 和 Java 都完成一份 C++ 的容器使用 都忘了 Java 的更是 不熟练 所以 开一篇 博文 记录一下 杂乱的笔记

算法OJ 杂记C++ Java 容器使用

笔记

头插节点

  • Java List 使用 add 添加可以直接 设置 位置
  • C++ 想要在 vector 头部加值 要 temp.insert(temp.begin(), t->val);

Java使用 queue

  • Queue queue = new LinkedList();

Java 和 C++ 队列出队 不同

  • Java 的 queue.poll(); 直接弹出 第一个值
  • C++ 的 queue 需要 front() 获取第一个值 然后 pop() 弹出

Java 容器 sort

使用 collectios 工具类 牛客网在线系统也要 引包 import java.util.*; 或者

代码语言:javascript
复制
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

传入自定义 Comparator 方法

代码语言:javascript
复制
Collections.sort(intervals,new Comparator<Interval>(){
     @Override
     public int compare(Interval o1, Interval o2) {
     return o1.start != o2.start ? o1.start - o2.start : o2.end - o1.end;//起点靠前 区间大的靠前 后面可以continue;
          }
            
});

String 和 int 的 转换

C++

C++11标准增加了全局函数std::to_string,

string转化为int 1、使用strtol(string to long) strtol(s.c_str(),&end,16); 2、使用sscanf sscanf(“17”,"%D",&i);

Java

1 如何将字串 String 转换成整数 int?

A. 有两个方法:

1). int i = Integer.parseInt([String]); 或

i = Integer.parseInt([String],[int radix]);

2). int i = Integer.valueOf(my_str).intValue();

注: 字串转成 Double, Float, Long 的方法大同小异.

2 如何将整数 int 转换成字串 String ?

A. 有叁种方法:

1.) String s = String.valueOf(i);

2.) String s = Integer.toString(i);

3.) String s = “” + i;

注: Double, Float, Long 转成字串的方法大同小异.

java 获取容器内元素 用 .get(下标)

strs.get(i);

Java 字符数组 用 string builder 可以toString 转 String

代码语言:javascript
复制
  StringBuilder sb = new StringBuilder();
        for(int i=n-1;i>=0;i--){
            sb.append(list.get(i));
        }
         
        String s = sb.toString();

字符串数字组合 进行排序

NC111 最大数

给定一个数组由一些非负整数组成,现需要将他们进行排列并拼接,使得最后的结果最大 清奇的排序思路

java版
代码语言:javascript
复制
Collections.sort(list, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return (o1+o2).compareTo(o2+o1);
            }
        });
c++版本
代码语言:javascript
复制
//定义一个排序规则
    static bool cmp(string a,string b){
        return a + b > b + a;
    }

Java 有 stack 没有直接的 queue

队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。 LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。

java使用 queue
代码语言:javascript
复制
//add()和remove()方法在失败的时候会抛出异常(不推荐)
Queue<String> queue = new LinkedList<String>();
//添加元素
queue.offer("a");
System.out.println("poll="+queue.poll()); //返回第一个元素,并在队列中删除
System.out.println("element="+queue.element()); //返回第一个元素 
System.out.println("peek="+queue.peek()); //返回第一个元素 

offer,add 区别: 一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。 这时新的 offer 方法就可以起作用了。它不是对调用 add() 方法抛出一个 unchecked 异常,而只是得到由 offer() 返回的 false。 poll,remove 区别: remove() 和 poll() 方法都是从队列中删除第一个元素。remove() 的行为与 Collection 接口的版本相似, 但是新的 poll() 方法在用空集合调用时不是抛出异常,只是返回 null。因此新的方法更适合容易出现异常条件的情况。 peek,element区别: element() 和 peek() 用于在队列的头部查询元素。与 remove() 方法类似,在队列为空时, element() 抛出一个异常,而 peek() 返回 null。

Java使用 stack

Java Stack 类 栈是Vector的一个子类,它实现了一个标准的后进先出的栈。

堆栈只定义了默认构造函数,用来创建一个空栈。 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。 在 vector 基础上增加了一些接口 1 boolean empty() 测试堆栈是否为空。 2 Object peek( ) 查看堆栈顶部的对象,但不从堆栈中移除它。 3 Object pop( ) 移除堆栈顶部的对象,并作为此函数的值返回该对象。 4 Object push(Object element) 把项压入堆栈顶部。 5 int search(Object element) 返回对象在堆栈中的位置,以 1 为基数。

代码语言:javascript
复制
 Stack<Integer> stint = new Stack<Integer>();
  Stack<Character> stchar = new Stack<Integer>();

不能用 int char 要用封装类 Integer Character

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-03-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 算法OJ 杂记C++ Java 容器使用
  • 笔记
    • 头插节点
      • Java使用 queue
        • Java 和 C++ 队列出队 不同
          • Java 容器 sort
            • String 和 int 的 转换
              • C++
              • Java
            • java 获取容器内元素 用 .get(下标)
              • Java 字符数组 用 string builder 可以toString 转 String
                • 字符串数字组合 进行排序
                  • java版
                  • c++版本
                • Java 有 stack 没有直接的 queue
                  • java使用 queue
                  • Java使用 stack
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
              http://www.vxiaotou.com