dfs
广度优先搜索
对于一个非空节点,我们遍历所有的没有被访问的子节点,然后对于本节点进行操作。
class Solution {
public:
void dfs(ListNode* temp,vector& ans){
if (temp)
{
dfs(temp->next,ans);
ans.push_back(temp->val);
}
}
public:
vector printListFromTailToHead(ListNode* head) {
vector ans;
dfs(head,ans);
return ans;
}
};
反转链表的实现
reverse函数
#include < algorithm >
例子:
1.reverse(str.begin(),str.end()) 反转字符串
2.reverse(vector.begin(),vector.end()) 反转向量
3.reverse(a,a+strlen(a)) 反转数组
同理我们还可以反转很多东西
例如二维向量reverse(ans.begin(),ans.end())
这里最后一列就变成了第一列!
vectorjava代码的实现ans; ListNode* temp=head; while(temp){ ans.push_back(temp->val); temp=temp->next; } reverse(ans.begin(),ans.end()); return ans;
java的arraylist类的复习
相比较于c++而言java的list需要初始化,而且java之中不可以有if(node)这样的写法必须是if(node!=null)才行。
arraylist的常用方法
add(index,object)
add(object)
remove(index)
remove(object)
Collections.shuffle(arraylist,rand)
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
public ArrayList printListFromTailToHead(ListNode listNode) {
// 由于这里必须要返回arraylist所以我们定义的变量是arraylist
ArrayList ans=new ArrayList();
while(listNode!=null){
ans.add(0,listNode.val);
listNode=listNode.next;
}
Collections.shuffle(ans);
return ans;
}
}



