- 46. Permutations和47. Permutations II
洞阳
leetcode回溯leetcode回溯
目录46.Permutations方法一、使用used数组回溯方法二、不使用used数组回溯47.PermutationsII回溯法46.Permutations方法一、使用used数组回溯classSolution{vector>res;vectorapermutation;public:vector>permute(vector&nums){vectorused(nums.size(),fal
- Python中的itertools模块常见函数用法示例
asdfg1258963
数据结构知识python开发语言
itertools,迭代工具模块,提供了用于高效处理迭代器和组合问题的工具。1.itertools.permutations(iterable,r=None)功能:生成输入迭代器的所有可能排列。参数:iterable:输入的可迭代对象。r:可选参数,指定排列的长度。如果不指定,则默认为输入迭代器的长度。示例:fromitertoolsimportpermutations#生成所有排列forperm
- 蓝桥杯Python组知识点
好好学习、天天向上。
python蓝桥杯算法
文章目录一、基础知识1.基本输入输出2.字符列表连接3.字母的大小写转换4.匿名函数lambda5.进制转换6.字符与整型之间的转换7.格式化保留小数点后几位小数8.列表排序9.str的内建函数10.list的内建函数二、常用内置模块1.阶乘factorial2.计数器Counter3.默认字典defaultdict4.双端队列deque5.全排列permutations6.组合combinati
- DFS+剪枝去重+排序+回溯算法+DFS遍历叶子节点 47. 全排列 II
豌豆射手GCC
leetcodeDFS
47.全排列II给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入:[1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解题难点:数组中有相同元素,但输出的全排列数组不
- 数据结构与算法之递归: LeetCode 51. N 皇后 (Ts版)
Wang's Blog
DataStructureandAlgorithmsleetcode算法
N皇后https://leetcode.cn/problems/permutations-ii/description/描述按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子n皇后问题研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击给你一个整数n,返回所有不同的n皇后问题的解决方案每一种解法包含一个不同的n皇后问题的棋子放置方案,该方案中‘Q’和‘.
- python实现排列组合--itertools
Draina
杂项笔记python开发语言
这是一个python自带的工具集,简单好用功能强大,能够大大提升编写代码效率。功能不止排列组合,其他的用用加深理解了再整理。官方文档:https://docs.python.org/zh-cn/3/library/itertools.html1.1、itertools.permutations()所有可能的排列,元素不可以重复出现,第一个元素是字符集,第二个元素是组合的长度。itertools.p
- 100 个 Python练习题[附代码]
宇宙大豹发
python算法java
需要更多python项目源码打包版本,领取方式在文末实例001:数字组合题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?程序分析:遍历全部可能,把有重复的剃掉。简便方法:用itertools中的permutations即可。importitertoolssum2=0a=[1,2,3,4]foriinitertools.permutations(a,3):pri
- 排列组合库
领带衬有黄金
product笛卡尔积(有放回抽样排列)permutations排列(不放回抽样排列)combinations组合,没有重复(不放回抽样组合)combinations_with_replacement组合,有重复(有放回抽样组合)详细的参见官网。importitertoolsforiinitertools.product('ABCD',repeat=2):print(i)结果:('A','A')(
- 搜索,动态规划,二叉树的时间复杂度计算通用公式
鸭蛋蛋_8441
搜索的时间复杂度:O(答案总数*构造每个答案的时间)举例:Subsets问题,求所有的子集。子集个数一共2^n,每个集合的平均长度是O(n)的,所以时间复杂度为O(n*2^n),同理Permutations问题的时间复杂度为:O(n*n!)动态规划的时间复杂度:O(状态总数*计算每个状态的时间复杂度)举例:triangle,数字三角形的最短路径,状态总数约O(n^2)个,计算每个状态的时间复杂度为
- Permutations II [leetcode]
是什么样的心情
Givenacollectionofnumbersthatmightcontainduplicates,returnallpossibleuniquepermutations.Forexample,[1,1,2]havethefollowinguniquepermutations:[1,1,2],[1,2,1],and[2,1,1]前一篇文章讲了无重复元素的排列,这篇文章讲的是有重复元素的排列问题
- 46. Permutations
刘小小gogo
image.png解法一:普通的回溯classSolution{public:vector>permute(vector&nums){vector>result;if(nums.empty())returnresult;vectorlist;dfs(list,result,nums);returnresult;}private:voiddfs(vector&list,vector>&result,
- Leetcode.46.Permutations
Jimmy木
题目给定一个没有重复数字的数字序列,输出这写数字的全排列组合.Input:[1,2,3]Output:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]思路这种全排列的问题最直接的思路就是递归.通过对已经排列的数字进行标记,来进行循环.voidrecrution(vector&nums,int&visit,vector&path,vector>&re
- chatgpt赋能python:Python排列代码初探
suimodina
ChatGptchatgpt计算机
Python排列代码初探作为一门非常流行的编程语言,Python有着极其强大的排列功能。在本文中,我们将对Python排列代码进行初步了解,包括其特点,使用场景,以及如何写出高质量的排列代码。特点Python排列代码的特点之一是简洁明了。使用Python编写的排列代码通常都很简短,同时也非常易于理解。这是因为Python提供了一些内建函数,如itertools.permutations()和ite
- 题目: 有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
薛定谔的喵~
Python习题编程python
题目:有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?这道题可以用itertools模块里面的permutations(排列)函数得到解决,也可以用常规方法得到解决,现列出两种方法:1、用itertools模块里面的permutations(排列)函数解答思路:用permutations(排列)函数将1,2,3,4四个数进行排列得到各种情况下的组合并把它转换为列表格式
- 全排列 (lintcode:permutations)
v1coder
给定一个数字列表,返回其所有可能的排列。假设没有重复数字。样例:给出一个列表[1,2,3],其全排列为:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]代码:classSolution:"""@param:nums:Alistofintegers.@return:Alistofpermutations."""defpermute(self,nums
- D. Gargari and Permutations
灬德布罗意的猫灬
DP思维c++算法学习
很好玩的一道类似LCS的DP问题定义dp(i)为考虑最后一个字符串,且选择a(i)得到的最大LIS值然后枚举所有小于i的位置,可以更新的条件是所有的字符串中都有a[j]usingnamespacestd;usingll=longlong;constintN=3e5+10;intn,m;mapmp[10];inta[N];intdp[N];voidsolve(){cin>>n>>m;for(inti
- 代码随想录算法训练营29期Day30|LeetCode 332,51,37
tlingyuqi
代码随想录算法训练营29期算法leetcodec++职场和发展
文档讲解:回溯算法总结篇重新安排行程N皇后解数独51.N皇后题目链接:https://leetcode.cn/problems/permutations/description/思路:本题的基本含义就是有个N*N的棋盘,需要我们放N个皇后在上面,满足不能有任意两个皇后位于同一行或者同一列或者同一对角线。这题我们可以按行搜索,每行放一个,这样保证了行不重复,递归边界条件为放到第N+1行,这证明前N行
- 16. Permutations II
鸭蛋蛋_8441
DescriptionGivenalistofnumberswithduplicatenumberinit.Findalluniquepermutations.ExampleExample1:Input:[1,1]Output:[[1,1]]Example2:Input:[1,2,2]Output:[[1,2,2],[2,1,2],[2,2,1]]ChallengeUsingrecursionto
- python中的排列组合
卡卡哈梅斯
在日常的工作学习中,我们肯定会遇到排列组合问题,比如,在5种颜色的球中,任意取3个,共有多少种组合方式,这也包括有放回和无放回抽样。在python中,自带的排列组合函数,都在python的指导工具包itertools中。product笛卡尔积(有放回抽样排列)permutations排列(不放回抽样排列)combinations组合,没有重复(不放回抽样组合)combinations_with_r
- 力扣算法 Java 刷题笔记【回溯算法篇 DFS】hot100(一)全排列 、子集 、组合 4
心海非海_
数据结构与算法leetcode算法java回溯
文章目录1.全排列(中等)2.全排列II(中等)3.子集(中等)4.组合(中等)1.全排列(中等)地址:https://leetcode-cn.com/problems/permutations/2022/01/23做题反思:classSolution{List>res=newLinkedList>permute(int[]nums){LinkedListtrack=newLinkedListtr
- leetcode hot100 之 全排列
smallplum123
LeetCodeleetcode算法职场和发展
题目给定一个无重复元素的整型数组,返回其所有排列。输入:nums=[1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]原题链接:https://leetcode-cn.com/problems/permutations/思路直接上回溯。按排列的基本思路即可。先选第一位,再选第二位,直到所有位都选完。假设有n个数字,则第一位有n种选法
- 力扣每日一题:回溯解法 全排列I & II
清风Python
46.全排列https://leetcode-cn.com/problems/permutations/难度:中等题目:给定一个没有重复数字的序列,返回其所有可能的全排列。示例:示例:输入:[1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]分析遇到全排列,所有可能等关键字,我们需要考虑DFS、回溯等解法。这道题算是比较基础的题目,
- 47. Permutations II
ujn20161222
leetcode
47.PermutationsIIclassSolution:defpermuteUnique(self,nums:List[int])->List[List[int]]:self.res=[]nums.sort()self.dfs(nums,[])returnself.resdefdfs(self,nums,path):ifnotnums:self.res.append(path)foriinr
- 【华为OD机试真题 python】考古学家
流。
python基础python
题目描述:考古问题,假设以前的石碑被打碎成了很多块,每块上面都有一个或若干个字符,请你写个程序来把之前石碑上文字可能的组合全部写出来,按升序进行排列。示例1输入3abc输出abcacbbacbcacabcba示例2输入3aba输出aabababaa思路:1,使用python——permutations()函数(说明:该函数可以对集合或字符串进行排序或排列的所有可能的组合)2,使用set集合去重fr
- python:product(),combinations,permutations()函数详解
北方骑马的萝卜
python学习python开发语言
在Python中,product()、combinations()和permutations()都是itertools模块中的函数,用于生成组合或排列。以下是它们的含义、用法和异同,并附带示例说明:1.product(iterable,repeat=1):含义:计算笛卡尔积,生成所有可能的元组。用法:iterable:输入的可迭代对象,如列表、元组等。repeat:可选参数,指定重复迭代的次数,默
- Codeforces 513B2 or 513B1 Permutations 策略题
Gatevin
ACM_MathCodeforcesCodeforces513B2Codeforces513B1Permutations策略题
题目链接:B1难度http://codeforces.com/contest/513/problem/B1(n#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeu
- LeedCode全排列Ⅱ——剪枝回溯
zuki_75b3
题目给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入:[1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题解及思路重复情况判断枚举出所有结果集,可以发现,在①步骤中
- 46. 全排列(中等)(LCR 083)
Rock在学习
回溯与子集组合排列切割python数据结构算法leetcode
https://leetcode.cn/problems/permutations/给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。示例1:输入:nums=[1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]classSolution:defpermute(self,nums:List[int]
- python内置函数-排列组合函数
Darker_坤
product笛卡尔积(有放回抽样排列)permutations排列(不放回抽样排列)combinations组合,没有重复(不放回抽样组合)combinations_with_replacement组合,有重复(有放回抽样组合)详细的参见官网。>>>foriinitertools.product('ABCD',repeat=2):...print(i)...('A','A')('A','B')(
- 全排列
蚓语戏言
给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入:[1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。classSolutio
- ViewController添加button按钮解析。(翻译)
张亚雄
c
<div class="it610-blog-content-contain" style="font-size: 14px"></div>// ViewController.m
// Reservation software
//
// Created by 张亚雄 on 15/6/2.
- mongoDB 简单的增删改查
开窍的石头
mongodb
在上一篇文章中我们已经讲了mongodb怎么安装和数据库/表的创建。在这里我们讲mongoDB的数据库操作
在mongo中对于不存在的表当你用db.表名 他会自动统计
下边用到的user是表明,db代表的是数据库
添加(insert):
- log4j配置
0624chenhong
log4j
1) 新建java项目
2) 导入jar包,项目右击,properties—java build path—libraries—Add External jar,加入log4j.jar包。
3) 新建一个类com.hand.Log4jTest
package com.hand;
import org.apache.log4j.Logger;
public class
- 多点触摸(图片缩放为例)
不懂事的小屁孩
多点触摸
多点触摸的事件跟单点是大同小异的,上个图片缩放的代码,供大家参考一下
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener
- 有关浏览器窗口宽度高度几个值的解析
换个号韩国红果果
JavaScripthtml
1 元素的 offsetWidth 包括border padding content 整体的宽度。
clientWidth 只包括内容区 padding 不包括border。
clientLeft = offsetWidth -clientWidth 即这个元素border的值
offsetLeft 若无已定位的包裹元素
- 数据库产品巡礼:IBM DB2概览
蓝儿唯美
db2
IBM DB2是一个支持了NoSQL功能的关系数据库管理系统,其包含了对XML,图像存储和Java脚本对象表示(JSON)的支持。DB2可被各种类型的企 业使用,它提供了一个数据平台,同时支持事务和分析操作,通过提供持续的数据流来保持事务工作流和分析操作的高效性。 DB2支持的操作系统
DB2可应用于以下三个主要的平台:
工作站,DB2可在Linus、Unix、Windo
- java笔记5
a-john
java
控制执行流程:
1,true和false
利用条件表达式的真或假来决定执行路径。例:(a==b)。它利用条件操作符“==”来判断a值是否等于b值,返回true或false。java不允许我们将一个数字作为布尔值使用,虽然这在C和C++里是允许的。如果想在布尔测试中使用一个非布尔值,那么首先必须用一个条件表达式将其转化成布尔值,例如if(a!=0)。
2,if-els
- Web开发常用手册汇总
aijuans
PHP
一门技术,如果没有好的参考手册指导,很难普及大众。这其实就是为什么很多技术,非常好,却得不到普遍运用的原因。
正如我们学习一门技术,过程大概是这个样子:
①我们日常工作中,遇到了问题,困难。寻找解决方案,即寻找新的技术;
②为什么要学习这门技术?这门技术是不是很好的解决了我们遇到的难题,困惑。这个问题,非常重要,我们不是为了学习技术而学习技术,而是为了更好的处理我们遇到的问题,才需要学习新的
- 今天帮助人解决的一个sql问题
asialee
sql
今天有个人问了一个问题,如下:
type AD value
A  
- 意图对象传递数据
百合不是茶
android意图IntentBundle对象数据的传递
学习意图将数据传递给目标活动; 初学者需要好好研究的
1,将下面的代码添加到main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http:/
- oracle查询锁表解锁语句
bijian1013
oracleobjectsessionkill
一.查询锁定的表
如下语句,都可以查询锁定的表
语句一:
select a.sid,
a.serial#,
p.spid,
c.object_name,
b.session_id,
b.oracle_username,
b.os_user_name
from v$process p, v$s
- mac osx 10.10 下安装 mysql 5.6 二进制文件[tar.gz]
征客丶
mysqlosx
场景:在 mac osx 10.10 下安装 mysql 5.6 的二进制文件。
环境:mac osx 10.10、mysql 5.6 的二进制文件
步骤:[所有目录请从根“/”目录开始取,以免层级弄错导致找不到目录]
1、下载 mysql 5.6 的二进制文件,下载目录下面称之为 mysql5.6SourceDir;
下载地址:http://dev.mysql.com/downl
- 分布式系统与框架
bit1129
分布式
RPC框架 Dubbo
什么是Dubbo
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 集群容错: 提供基于接
- 那些令人蛋痛的专业术语
白糖_
springWebSSOIOC
spring
【控制反转(IOC)/依赖注入(DI)】:
由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。
简单的说:对象的创建又容器(比如spring容器)来执行,程序里不直接new对象。
Web
【单点登录(SSO)】:SSO的定义是在多个应用系统中,用户
- 《给大忙人看的java8》摘抄
braveCS
java8
函数式接口:只包含一个抽象方法的接口
lambda表达式:是一段可以传递的代码
你最好将一个lambda表达式想象成一个函数,而不是一个对象,并记住它可以被转换为一个函数式接口。
事实上,函数式接口的转换是你在Java中使用lambda表达式能做的唯一一件事。
方法引用:又是要传递给其他代码的操作已经有实现的方法了,这时可以使
- 编程之美-计算字符串的相似度
bylijinnan
java算法编程之美
public class StringDistance {
/**
* 编程之美 计算字符串的相似度
* 我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:
* 1.修改一个字符(如把“a”替换为“b”);
* 2.增加一个字符(如把“abdd”变为“aebdd”);
* 3.删除一个字符(如把“travelling”变为“trav
- 上传、下载压缩图片
chengxuyuancsdn
下载
/**
*
* @param uploadImage --本地路径(tomacat路径)
* @param serverDir --服务器路径
* @param imageType --文件或图片类型
* 此方法可以上传文件或图片.txt,.jpg,.gif等
*/
public void upload(String uploadImage,Str
- bellman-ford(贝尔曼-福特)算法
comsci
算法F#
Bellman-Ford算法(根据发明者 Richard Bellman 和 Lester Ford 命名)是求解单源最短路径问题的一种算法。单源点的最短路径问题是指:给定一个加权有向图G和源点s,对于图G中的任意一点v,求从s到v的最短路径。有时候这种算法也被称为 Moore-Bellman-Ford 算法,因为 Edward F. Moore zu 也为这个算法的发展做出了贡献。
与迪科
- oracle ASM中ASM_POWER_LIMIT参数
daizj
ASMoracleASM_POWER_LIMIT磁盘平衡
ASM_POWER_LIMIT
该初始化参数用于指定ASM例程平衡磁盘所用的最大权值,其数值范围为0~11,默认值为1。该初始化参数是动态参数,可以使用ALTER SESSION或ALTER SYSTEM命令进行修改。示例如下:
SQL>ALTER SESSION SET Asm_power_limit=2;
- 高级排序:快速排序
dieslrae
快速排序
public void quickSort(int[] array){
this.quickSort(array, 0, array.length - 1);
}
public void quickSort(int[] array,int left,int right){
if(right - left <= 0
- C语言学习六指针_何谓变量的地址 一个指针变量到底占几个字节
dcj3sjt126com
C语言
# include <stdio.h>
int main(void)
{
/*
1、一个变量的地址只用第一个字节表示
2、虽然他只使用了第一个字节表示,但是他本身指针变量类型就可以确定出他指向的指针变量占几个字节了
3、他都只存了第一个字节地址,为什么只需要存一个字节的地址,却占了4个字节,虽然只有一个字节,
但是这些字节比较多,所以编号就比较大,
- phpize使用方法
dcj3sjt126com
PHP
phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块,下面介绍一个它的使用方法,需要的朋友可以参考下
安装(fastcgi模式)的时候,常常有这样一句命令:
代码如下:
/usr/local/webserver/php/bin/phpize
一、phpize是干嘛的?
phpize是什么?
phpize是用来扩展php扩展模块的,通过phpi
- Java虚拟机学习 - 对象引用强度
shuizhaosi888
JAVA虚拟机
本文原文链接:http://blog.csdn.net/java2000_wl/article/details/8090276 转载请注明出处!
无论是通过计数算法判断对象的引用数量,还是通过根搜索算法判断对象引用链是否可达,判定对象是否存活都与“引用”相关。
引用主要分为 :强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Wea
- .NET Framework 3.5 Service Pack 1(完整软件包)下载地址
happyqing
.net下载framework
Microsoft .NET Framework 3.5 Service Pack 1(完整软件包)
http://www.microsoft.com/zh-cn/download/details.aspx?id=25150
Microsoft .NET Framework 3.5 Service Pack 1 是一个累积更新,包含很多基于 .NET Framewo
- JAVA定时器的使用
jingjing0907
javatimer线程定时器
1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。
对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。
privatejava.util.Timer timer;
timer = newTimer(true);
timer.schedule(
newjava.util.TimerTask() { public void run()
- Webbench
流浪鱼
webbench
首页下载地址 http://home.tiscali.cz/~cz210552/webbench.html
Webbench是知名的网站压力测试工具,它是由Lionbridge公司(http://www.lionbridge.com)开发。
Webbench能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相
- 第11章 动画效果(中)
onestopweb
动画
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
- windows下制作bat启动脚本.
sanyecao2314
javacmd脚本bat
java -classpath C:\dwjj\commons-dbcp.jar;C:\dwjj\commons-pool.jar;C:\dwjj\log4j-1.2.16.jar;C:\dwjj\poi-3.9-20121203.jar;C:\dwjj\sqljdbc4.jar;C:\dwjj\voucherimp.jar com.citsamex.core.startup.MainStart
- Java进行RSA加解密的例子
tomcat_oracle
java
加密是保证数据安全的手段之一。加密是将纯文本数据转换为难以理解的密文;解密是将密文转换回纯文本。 数据的加解密属于密码学的范畴。通常,加密和解密都需要使用一些秘密信息,这些秘密信息叫做密钥,将纯文本转为密文或者转回的时候都要用到这些密钥。 对称加密指的是发送者和接收者共用同一个密钥的加解密方法。 非对称加密(又称公钥加密)指的是需要一个私有密钥一个公开密钥,两个不同的密钥的
- Android_ViewStub
阿尔萨斯
ViewStub
public final class ViewStub extends View
java.lang.Object
android.view.View
android.view.ViewStub
类摘要: ViewStub 是一个隐藏的,不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件。当 ViewSt