算法刷题细节点总结

1. 关于比较器Comparator

        Queue<Integer> pq=new PriorityQueue<Integer>(new Comparator<Integer>(){
            public int compare(Integer a, Integer b){   // 这里要严格写成和上面的一样
                return b-a;
            }
        });

原来上面的compare方法中参数类型写成了 int, 以为也能编译通过,结果不行,要严格和Comparator中的泛型一致。自定义了比较器后就可以在Collections和Arrays的sort方法对容器中的元素进行排序,默认是升序排序的。

2. 关于集合

(1) 如何遍历map?

可以参考这篇博文:https://www.cnblogs.com/imzhj/p/5981665.html

感觉最好记的方法是这个:

Map<String, String> map = new HashMap<String, String>();
for (Entry<String, String> entry : map.entrySet()) {
    entry.getKey();
    entry.getValue();
}

(2) set集合的增删改元素方法和List集合是一样的吗?remove方法的一个疑问

一样的,都是 add 和 remove 方法,只不过list的remove方法能按照indxex来删,而set只能按照Object来删。这里有一个长久以来的疑问是如果List集合中放入的是int型元素的话,如果此时使用remove方法,传入int的 话是按照索引来删除元素还是按照int的值来删除元素的呢?

测试结果是还是按照索引来删,如果使用 (Integer)3 这种方式将int包装为Integer的话就会按照值去删。

(3) set和list集合怎么和数组互转?

参考: https://blog.csdn.net/my_precious/article/details/53010232

(4) 关于PriorityQueue的用法

参考:https://blog.csdn.net/u013309870/article/details/71189189

很有用的数据结构,可以用它来实现堆。

3. 关于字符和字符串

(1) 相互转换

int转String直接加""即可,String转int需要用到Integer.parseInt()方法。

String转char数组直接调用toCharArray()方法,

(2) 快速逆转字符串

 String reversed = new StringBuilder(s).reverse().toString()

原文地址:https://www.cnblogs.com/f91og/p/9629645.html

时间: 2024-10-08 04:51:36

算法刷题细节点总结的相关文章

算法刷题记录

ACWING acwing 528. 奶酪 解题记录 acwing 471. 棋盘 解题记录 acwing 95 费解的开关 解题记录 dfs的几个基础示例 acwin 91~94 LEETCODE 刷题记录与资料 LEETCODE 1031. 两个非重叠子数组的最大和 dfs的几个基础示例 leetcode 刷题进展 leetcode 算法分类 原文地址:https://www.cnblogs.com/itdef/p/10854320.html

一些算法刷题的网站

1. leetcode http://leetcode.com/ 2. careerup http://www.careercup.com/ http://hawstein.com/posts/ctci-solutions-contents.html 3. glassdoor http://www.glassdoor.com/index.htm 4. topcoder http://www.topcoder.com/ 5. zoj http://acm.zju.edu.cn/onlinejudg

[转帖] 一些算法刷题的网站

1. leetcode http://leetcode.com/ 2. careerup http://www.careercup.com/ http://hawstein.com/posts/ctci-solutions-contents.html 3. glassdoor http://www.glassdoor.com/index.htm 4. topcoder http://www.topcoder.com/ 5. zoj http://acm.zju.edu.cn/onlinejudg

【算法】搞定[机试]算法刷题 全文超过80页pdf

目录 算法专题 一.树和图 1. 二叉树构造和遍历 2. 朋友圈 - 并查集 3. 公共朋友 - 非朋友圈 4. 哈夫曼树 5. 其他二叉树性质相关计算 6. 图的连通分量 7. 最小生成树 8. 单源最短路径 - dijkstra 二.枚举搜索 1. 按钮开关问题 2. 多层枚举问题 三.递归搜索 1. 简单递归 2. 递增排列组合类 3. 全排列问题 4. 草丛问题 5. 迷宫问题 6. 广度优先搜索的剪枝 7. 总操作步数固定枚举问题 四.数学问题 1. 高精度计算 2. 素数和质因子分解

按算法刷题路线

搜索:八数码,生日蛋糕,靶形数独,(虫食算),最优贸易,引水入城,埃及分数,(p1189) dp:方格取数,树网的核,旅行路线 贪心:huffman,疫情控制 生成树:灾后重建,货车运输 连通块:间谍网络,星球大战 最短路:最优贸易,社交网络 最大流:地震逃生 区间:RMQ,区间连续和 数论:hank儿子题,解方程,虫食算,向量內积,斐波那契数列 字符串:阿里打印机

九章算法刷题总结

1.实现一个memcpy函数:memcpy(void *p, void *q, unsigned len);  思路:1.注意p.q是否为NULL  2.内存重叠的情况  3.每次copy字节数:32系统可以选择4字节如int,64系统可以选择8字节如long long 2.STL中vector的实现原理 vector本质其实就是一个动态内存分配的数组,内存分配策略(元素个数): 0->1->2->4->8->16->... 相关方法:可以通过capacity函数获取当

算法刷题-1-单链表操作

1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 //练习单链表操作:给出单链表 head 和 n,要求删除单链表倒数第n个结点,并连接剩余结点 5 //例子:1-2-3-4-5,n=2,删除后应该是:1-2-3-5 6 typedef struct ListNode{ 7 int data; 8 ListNode *next; 9 }ListNode; 10 11 int create

算法刷题1

1.插入排序 先用一个temp保存当前待插入的元素,然后用一个while循环移动p,循环条件中要判断p>=0,如果待插入的元素小于有序区的所有元素,p会移动的负数,让它0时再循环一次,出来的时候即可插入到对应的位置. 2.选择排序 3.堆排序 如果写实际下标那么就用i2+1<=length判断,判断是否还有右兄弟时:child+1<=length.传进去的参数需要swap后,要i-1. 如果写的不是实际下标,就用i2+1<length判断,判断是否是还有右兄弟时:child+1&l

8月leetcode刷题总结

刷题链接:https://leetcode-cn.com/explore/ 根据leetcode的探索栏目,八月份一直在上面进行刷题.发现算法题真的好难,真-计算机思维. 核心是将现实问题转化为计算机能够处理的计算问题.而这些计算问题都是通过逻辑分析来解决的. 因此逻辑-分析能力就是计算机思维的核心能力.比如将一个数组的增删改查,是通过逻辑中的 if   -else   while   这些基本语句构成的. 引用左神的算法刷题方法:" 第一阶段:对于某一个具体的算法,首先要搞清楚这个算法解决的问